我的htaccess重定向知识有点弱,所以我希望能在这里得到一些帮助。
我目前有以下重定向,效果很好:
# remove trailing slash
RewriteRule ^(.*)/$ /$1 [L,R=301]
# redirect to clean URL
RewriteCond /%{REQUEST_FILENAME}.php -f
RewriteRule ^([a-zA-Z0-9_-\s]+)$ /$1.php
这会将www.mysite.com/about
之类的网址带到www.mysite.com/about.php
现在我想保持这种行为,但是添加参数(如果适用),如下:
www.mysite.com/about
=> www.mysite.com/about.php
www.mysite.com/gallery/1
=> www.mysite.com/gallery.php?id=1
如果可能,我可能希望将此系统扩展为2个或更多参数,如下所示:
www.mysite.com/gallery/1/2
=> www.mysite.com/gallery.php?id=1§ion=2
所以模式是:
id
参数section
参数答案 0 :(得分:1)
试一试
# remove trailing slash
RewriteRule ^(.*)/$ /$1 [L,R=301]
# redirect to clean URL
RewriteCond /%{REQUEST_FILENAME}.php -f
RewriteRule ^([a-zA-Z0-9_-\s]+)$ /$1.php
RewriteRule ^([a-zA-Z0-9_-\s]+)/([a-zA-Z0-9_-\s]+)/([a-zA-Z0-9_-\s]+)$ /$1.php?id=$2§ion=$3
#RewriteRule ^([a-zA-Z0-9_-\s]+)/([a-zA-Z0-9_-\s]+)/([a-zA-Z0-9_-\s]+)/([a-zA-Z0-9_-\s]+)$ /$1.php?param1=$2¶m2=$3¶m3=$4 and so on
答案 1 :(得分:1)
您应该考虑使用通用路由器。这完全解放了你的重定向以使用你想要的任何东西。
通常,路由器规则如下所示:
RewriteRule ^(.*)$ handler.php?path=$1 [QSA]
如果您希望通过路由器发送静态文件(如CSS文件和图像),可以添加-f
和-d
,但在我的情况下,即使是那些通过我的路由器。< / p>
然后在handler.php
中检查输入,看看是否知道如何处理,例如:网址是/about
还是/gallery/[0-9]
。