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



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

forhttp://www.domain.com/index.php?p=page&p1=参数&p2=参数2&p3=参数3

我想要: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"并发送parameter1=main.css。我该如何解决这个问题?

我在网上搜索了一下,但一无所获。我的印象是,每一个url重写问题都是不同的。。。不管怎样,如果你能帮我,谢谢!

记住:每一次RewriteCond都适用于第一次RewriteRule。所以,若文件存在,除了样式表的URL是/style.css.之外,它将被忽略

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

最新更新