0

我正在尝试为我的应用程序创建干净的 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 个变量;pid。如果我在 .htaccess 文件中只有一个规则(带有 1 个变量的规则),一切都会好起来的。但是当我添加第一条规则(带有 2 个变量的规则)时,似乎所有的 css、js 和图像文件都会消失。
我是这样写css、图片和js文件的:

./directory_name/file_name

请帮助我制作具有多个规则的干净 URL。

4

2 回答 2

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]
于 2013-06-26T20:00:45.217 回答
0

如果您遵循前端控制器模式(即一切都通过index.php),我鼓励您使用FallbackResource.

FallbackResource /index.php

它比mod_rewrite同等产品更简洁和高效(如anubhava 的回答所示):

于 2013-06-26T20:01:38.153 回答