.htaccess 使用多个重写规则

l7mqbcuq  于 2023-02-13  发布在  其他
关注(0)|答案(2)|浏览(173)

我试图创建多个重写规则,使友好的网址,但我所做的,使我的网站抛出错误500。
我试过这个方法,但似乎行不通。

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*) /index.php?category=$1 [L]
RewriteRule ^(.*)/(.*) /index.php?category=$1&subcategory=$2 [L]
RewriteRule ^(.*)/(.*)/(.*) /index.php?category=$1&subcategory=$2&userid=$3 [L]

我需要的基本上是使这个网址工作:将domain.com/GetAnnouncements转换为domain.com/index.php?category=GetAnnouncements
domain.com/Persona/GetAchievements/2转换为domain.com/index.php?category=Persona&subcategory=GetAchievements&userid=2
并且还应该有第三个选项,该选项在没有第三个参数的情况下“在中间”工作,该第三个参数是&userid=2

nxagd54h

nxagd54h1#

使用您显示的示例,请尝试以下.htaccess规则文件。
确保一次只能使用第一种或第二种溶液。

请确保:

  • 要保存.htaccess规则文件,请将index.php文件保存在根目录位置。
  • 在测试URL之前清除浏览器缓存。
    ***第一个解决方案:***使用正则表达式的一般规则。
Options +FollowSymLinks
RewriteEngine on

RewriteRule ^([^/]*)/?$ /index.php?category=$1 [L]
RewriteRule ^([^/]*)/([^/]*)/?$ /index.php?category=$1&subcategory=$2 [L]
RewriteRule ^([^/]*)/([^/]*)/(/d+)/?$ /index.php?category=$1&subcategory=$2&userid=$3 [L]

***或第二个解决方案:***仅根据所示示例使用特定字符串/URL。

Options +FollowSymLinks
RewriteEngine on

RewriteRule ^(GetAnnouncements)/?$ /index.php?category=$1 [NC,L]
RewriteRule ^(Persona)/(GetAchievements/)/?$ /index.php?category=$1&subcategory=$2 [NC,L]
RewriteRule ^(Persona)/(GetAchievements/)(/d+)/?$ /index.php?category=$1&subcategory=$2&userid=$3 [NC,L]
chy5wohz

chy5wohz2#

经过更多的谷歌搜索和咨询我的朋友,我们来到这个解决方案的工作:

Options +FollowSymLinks
RewriteEngine On

RewriteRule ^(.*)/(.*)/(.*)$ index.php?category=$1&subcategory=$2&userid=$3 [L,QSA]
RewriteRule ^(.*)/(.*)$ index.php?category=$1&subcategory=$2 [L,QSA]
RewriteRule ^(.*)$ index.php?category=$1 [L,QSA]

谢谢所有想帮忙的人!

相关问题