htaccess url rewrite to .php


htaccess url rewrite to .php

我有以下网址

http://www.***.org/aaddress.php?state=nm&office_id=852&office_name=CLOVIS&state_name=New%20Mexico

我想将其更改为以下网址

http://www.*****.org/aaddress-state-nm-office_id-852-office_name-CLOVIS-state_New%20Mexico.php

我在下面使用了 htaccess 代码

Options +FollowSymLinks
RewriteEngine on
RewriteRule aaddress-state-(.*)-office_id-(.*)-office_name-(.*)-state_name-(.*)'.php aaddress.php?state=$1&office_id=$2&office_name=$3&state_name=$4

它不起作用,当我单击写入时,地址没有转换为.php页面

我在页面内的链接作为第一个链接,并希望将其更改为.php链接

使用它,

RewriteRule ^aaddress-state-([^-]+)-office_id-([^-]+)-office_name-([^-]+)-state_name-([^'.]+)'.php$ aaddress.php?state=$1&office_id=$2&office_name=$3&state_name=$4

^$ 将匹配整个 URL,除非遇到-,否则[^-]+将匹配任何内容。除非遇到.,否则[^'.]+会匹配任何东西。

这将匹配aaddress-state-nm-office_id-852-office_name-CLOVIS-state_name-New Mexico.php不是aaddress-state-nm-office_id-852-office_name-CLOVIS-state_New Mexico.php.请注意后面的 URL 中缺少name-部分state_New Mexico

试试这个:

RewriteRule ^aaddress-state-(.*)-office_id-(.*)-office_name-(.*)-state_name-(.*)'.php aaddress.php?state=$1&office_id=$2&office_name=$3&state_name=$4 [QSA,L]

这是一个基于递归的通用解决方案,无论您的查询字符串有多长,它都可以工作。

Options +FollowSymLinks -MultiViews
RewriteEngine on
RewriteBase /
RewriteRule ^aaddress'.php$ aaddress-%{QUERY_STRING} [L]
RewriteRule ^([^&]+)&([^&]+)(&.*)?$ $1-$2$3 [L]
RewriteRule ^([^&])& $1 [L]
RewriteRule ^([^=]+)=([^=]+)(=.*)?$ $1-$2$3 [L]
RewriteRule ^([^=])= $1 [L]

这会在内部将您的示例 URL 重定向到:通过将查询字符串的每个&=替换为连字符-/aaddress-state-nm-office_id-852-office_name-CLOVIS-state_name-New+Mexico