htaccess重定向 - 第一段到PHP文件,第二段作为参数

时间:2013-07-02 17:03:08

标签: php .htaccess mod-rewrite

我的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&section=2

所以模式是:

  • 第一个网址段重定向到PHP文件
  • (可选)将第二个段添加为id参数
  • (可选)将第三个段添加为section参数

2 个答案:

答案 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&section=$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&param2=$3&param3=$4 and so on

答案 1 :(得分:1)

您应该考虑使用通用路由器。这完全解放了你的重定向以使用你想要的任何东西。

通常,路由器规则如下所示:

RewriteRule ^(.*)$ handler.php?path=$1 [QSA]

如果您希望通过路由器发送静态文件(如CSS文件和图像),可以添加-f-d,但在我的情况下,即使是那些通过我的路由器。< / p>

然后在handler.php中检查输入,看看是否知道如何处理,例如:网址是/about还是/gallery/[0-9]