0

我的 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这需要一个类似的URLwww.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

所以模式将是:

  • 第一个 URL 段重定向到 PHP 文件
  • (可选)第二段作为id参数添加
  • (可选)第三段被添加为section参数
4

2 回答 2

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
于 2013-07-02T17:06:44.653 回答
1

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

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

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

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

然后在handler.php你检查输入,看看它是否是你知道如何处理的东西,比如:是 URL like/about还是 is it like /gallery/[0-9]

于 2013-07-02T17:07:13.840 回答