使用类似文件夹的样式重写URL

时间:2013-11-30 20:46:58

标签: apache url-rewriting

我正在创建一个网站,我想要像这样的文件夹式网址:

for http://www.domain.com/index.php?p=page&p1=paramter&p2=paramter2&p3=parameter3

我想:http://www.domain.com/page/parameter/parameter2/parameter3

所以,我做了这样的代码:

#Hide folder's content from users
Options All -Indexes

#Url rewriting
RewriteEngine On
Options +FollowSymlinks
RewriteBase /IXF/

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^([^/]+)/?$ index.php?p=$1 [QSA,L]
RewriteRule ^([^/]+)/([^/]+)/?$ index.php?p=$1&p1=$2 [QSA,L]
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ index.php?p=$1&p1=$2&p2=$3 [QSA,L]
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ index.php?p=$1&p1=$2&p2=$3&=p3=$4 [QSA,L]

它运作良好!但唯一的问题是我在/css/main.css中有一个css文件,并且重写是试图加载页面“css”并发送参数1 = main.css。我怎么能解决这个问题?

我在互联网上搜索但我一无所获。而且我的印象是每个网址重写问题都是不同的... 无论如何,如果你能帮助我,谢谢你!

1 个答案:

答案 0 :(得分:0)

请记住:每个 RewriteCond 适用于第一个 RewriteRule 。因此,如果文件存在,它将被忽略,除了样式表的URL是 /style.css

解决方案:为每个 RewriteRule 重复 RewriteCond 块或(我建议的)将路由移至应用程序。依赖htaccess是不可移植的,移动到另一个httpd(例如nginx)将需要更多的工作。