htaccess的URL重写.PHP
我有以下网址htaccess的URL重写.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 [QSA,L]
感谢您的回复,但它仍然不工作:( – Pipo 2012-02-03 08:54:59
使用此,
RewriteRule ^aaddress-state-([^-]+)-office_id-([^-]+)-office_name-([^-]+)-state_name-([^\.]+)\.php$ aaddress.php?state=$1&office_id=$2&office_name=$3&state_name=$4
^
和$
将匹配整个网址和[^-]+
将匹配任何内容,除非遇到-
。并且[^\.]+
将匹配任何内容,除非遇到.
。
这将匹配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
。 注意丢失name-
部分state_New Mexico
在后面的URL。
这是一个基于递归的通用解决方案无论查询字符串多长时间都可以工作。通过更换每个&
和=
查询字符串来连字符-
/aaddress-state-nm-office_id-852-office_name-CLOVIS-state_name-New+Mexico
:
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重定向到。
谢谢,我会尽快尝试 – Pipo 2012-02-03 18:13:26
+1对于有趣的问题,我会尽力想出一个合适的答案。 – anubhava 2012-02-03 15:38:24