首页 > 解决方案 > 如何编写多个 .htaccess 重写规则?

问题描述

我有多个php这样的页面:

http://www.example.com/si/article.php?id=122&nTitle=my-title
http://www.example.com/si/post.php?id=352&pTitle=my-post-title

我想将它们重写为

http://www.example.com/si/122/my-title
http://www.example.com/si/352/my-post-title

我在我的.htaccess文件中尝试了不同的东西,但没有结果。请告诉我如何使用多个规则。如果我在.htaccess文件中使用一条规则,则它适用于一个 php 页面,如下所示:

RewriteRule ^([\s\w-]+)/(.*)/?$ article.php?id=$1&nTitle=$2 [L,QSA,NC]

现在我尝试了多个页面:

<ifModule mod_rewrite.c>
  Options -Indexes
  RewriteEngine on

  RewriteCond %(REQUEST_FILENAME) !-f
  RewriteCond %(REQUEST_FILENAME) !-d
  RewriteRule ^/([\s\w-]+)/(.*)$ /article.php?id=$1&pName=$2 [L,QSA,NC]

  RewriteCond %(REQUEST_FILENAME) !-f
  RewriteCond %(REQUEST_FILENAME) !-d
  RewriteRule ^/([\s\w-]+)/(.*)$ /post.php?id=$1&pName=$2 [L,QSA,NC]

</IfModule>

谁能给我一个关于如何使用这个功能的建议.htaccess

谢谢你。

标签: php.htaccessmod-rewriteurl-rewriting

解决方案


您可以使用 url 之类的:(看起来彼此不同)

http://www.example.com/arical-si/122/my-title
http://www.example.com/post-si/352/my-post-title

然后重定向到:

<IfModule mod_rewrite.c>
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$0 
RewriteRule ^artical-si/([0-9+/=$]*)/([A-Za-z0-9+/=$]*)$ article.php?id=$1&nTitle=$2 [L]
RewriteRule ^post-si/([0-9+/=$]*)/([A-Za-z0-9+/=$]*)$ post.php?id=$1&nTitle=$2 [L]
</IfModule>

推荐阅读