在php中写清洁网址

时间:2012-05-13 19:10:14

标签: php .htaccess

我想用这种格式的字符串写我的网址: http://www.mysite.com/news/2012/10/04/article-title 但是当我在htaccess文件中使用RewriteRule时,网站样式无法正常工作。我有这个问题:在php中执行此操作的最佳方法是什么? 以前我在asp.net whit重写模块中这样做,但现在我不能这样做,我已经搜索了很多次并阅读了很多文章,但仍然有这个问题.... 非常感谢

4 个答案:

答案 0 :(得分:3)

使用单一入口点:

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

这样,所有请求都将被路由到索引页面,其中包含所需地址的GET变量。现在,您可以决定如何在PHP内部路由(包含),控制更容易。

此外,您应该使用绝对路径指向您的样式,或者使用PHP变量来包含样式的绝对路径。

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

答案 1 :(得分:2)

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

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

如果这对您不起作用,那么您可能也在重写CSS路径。根据需要排除文件(可能最好通过检查它是否以某些扩展名结束)

答案 2 :(得分:0)

如果您的规则设置正确但之后您的CSS格式消失了,则表示您的CSS文件的相对路径现在不正确。

你现在可能正在使用这样的东西:

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

将其更改为:

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

答案 3 :(得分:0)

我使用的解决方案是基本的html标记,可以对图像和样式表进行排序。

请务必至少使用:RewriteCond %{REQUEST_FILENAME} !-f - 也许可以使其更加安全,因此直接路径仍可正常使用。