2012-05-13 42 views
1

我想写我的网址与字符串的格式如下: http://www.mysite.com/news/2012/10/04/article-title 但是当我在htaccess文件的网站样式使用重写规则不正常工作。我有这个问题:什么是最好的方式来做到这一点在PHP? 以前我在asp.net白色重写模块中这样做,但现在我不能这样做,我已经搜索了很多次,阅读了很多文章,但仍然有这个问题.... 非常感谢写干净的URL在PHP

回答

3

使用一个入口点(可能是最好的,如果它带有特定扩展名结尾检查完成)包含所需地址的GET变量。现在,您可以决定如何在PHP中进行路由(使用includes),其中控制更容易。此外,您应该使用绝对路径指向您的样式,或者使用PHP变量来包含样式的绝对路径。

以上.htaccess确保如果文件存在,它不会重写URL。 (2-3行)。

+0

当我使用这个htaccess代码时,首先我的样式工作正常,但是当我去其他网址的时候,例如:www.mysite.com/test/我的样式不见了,我尝试了css路径,在这种情况下,我将css路径更改为:href =“../ css/main.css”,我的风格正常工作! –

+0

如何定义一个变量来修复我的CSS和JS路径? –

+0

我使用这段代码解决了这个问题:define('ROOT_DIR',dirname(__ FILE__)); \t define('ROOT_URL',substr($ _ SERVER ['PHP_SELF'],0, - (strlen($ _ SERVER ['SCRIPT_FILENAME']) - strlen(ROOT_DIR)))); –

2

就个人而言,我使用绝对路径(或至少相对于根)在我的样式表和脚本时,把:

<link rel="stylesheet" href="/css/styles.css" /> 

如果不为你工作,那么你可能重写你的CSS路径,以及。

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php?route=$1 [L] 

这样,所有的请求都将被路由到索引页,具有:根据需要排除的文件

+0

好点 - 相对于根有很大帮助。我通常将样式/ JS文件/图像保存在“数据”文件夹中,这样我就可以将其排除在任何重写之外。似乎比排除某些扩展更容易,因为您可以将任何不想重写的内容(包括PHP和HTML)放在数据文件夹中。 –

+0

我可以这样做吗?例如,我可以将我的CSS,js,img文件保存到额外的文件夹中,并从重写中排除该文件夹,但是如何? –

0

如果您的规则设置正确,但之后您的CSS格式不见了,这意味着您的CSS文件的相对路径现在不正确。

你可能会使用这样的事情现在:

<link rel="stylesheet" href="css/styles.css" /> 

更改它以这样的:

<link rel="stylesheet" href="/css/styles.css" /> 
+0

我改变了css文件路径,但它的剂量工作 –

0

我使用的解决方案是基本的HTML标签,挑选出图像和样式表。

请务必使用:RewriteCond %{REQUEST_FILENAME} !-f至少 - 也许可以让它更安全,所以直接路径仍然可以。

+0

我有这条线在我的htaccess文件,但仍然有问题\ –