我为所有要求通过index.php
的请求设置了我的网站我当前的.htaccess文件如下:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
我的网站结构基于MVC,因此它会查看控制器,操作和可选ID的网址。
我想将新请求的请求重写为友好网址。
在第一个例子中,我只想使用新闻ID。
所以不要去新闻/文章/ 1我希望它去新闻/ 1
我已尝试过以下规则,但无法让它发挥作用。
RewriteRule ^news/([0-9]+) /news/article.php?id=$1
RewriteRule ^news/([0-9]+) /news/article/$1
此规则显示正确的页面,但所有样式都已删除。
RewriteRule ^news/([0-9]+)$ /news/article/$1 [L]
答案 0 :(得分:0)
您的规则看起来是正确的,请不要忘记[L]
行末尾的RewriteRule
标记。
使用
时没有样式的原因RewriteRule ^news/([0-9]+)$ /news/article.php?id=$1 [L]
可能是因为您忘记设置CSS / Javascript源URL和任何图像以包含绝对路径,否则他们将尝试从article
目录中加载。
答案 1 :(得分:0)
我能够通过在控制器中重新路由所有新闻文章请求来解决此问题。