我正在尝试为我的应用程序创建干净的URL。所以我在 .htaccess 文件中编写了以下代码。
RewriteEngine On
Options +FollowSymLinks
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/(.*)/?$ index.php?p=$1&id=$2 [NC,L]
RewriteRule ^(.*)/?$ index.php?p=$1 [NC,L]
如您所见,查询字符串中最多可包含2个变量; p 和 id 。如果我在.htaccess文件中只有一个规则(带有1个变量的规则),一切都会好的。但是当我添加第一条规则(带有2个变量的规则)时,似乎所有的css,js和图像文件都会消失。
我用这种方式写了css,images和js文件:
./目录名/ FILE_NAME
请帮我制作包含多个规则的干净网址。
答案 0 :(得分:0)
将您的代码更改为:
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -l
RewriteRule ^ - [L]
RewriteRule ^([^/]+)/([^/]+)/?$ /index.php?p=$1&id=$2 [QSA,L]
RewriteRule ^([^/]+)/?$ /index.php?p=$1 [QSA,L]
答案 1 :(得分:0)
如果您关注Front-Controller Pattern,(即所有内容都经过index.php
),我们建议您使用FallbackResource
。
FallbackResource /index.php
它比mod_rewrite
等效物更简洁和高效(如 anubhava的答案中所见):