我有多个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
中使用此功能的建议吗?
谢谢。
答案 0 :(得分:1)
您可以使用如下网址:(看起来彼此不同)
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>
答案 1 :(得分:0)
首先,您应该测试您的正则表达式,您可以在regex generator
然后在您的htaccess中,您可以将正则表达式如下:
RewriteEngine on
RewriteRule ^/post.php?id=([0-9])&pName=([a-z]+)$ post/$1/$2 [L]
RewriteRule ^/article.php?id=([0-9])&pName=([a-z]+)$ article/$1/$2 [L]
逐步尝试,您可以轻松对其进行调试。