2012-02-03 136 views
4

我有以下网址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为纽带

+0

+1对于有趣的问题,我会尽力想出一个合适的答案。 – anubhava 2012-02-03 15:38:24

回答

0

试试这个:

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] 
+0

感谢您的回复,但它仍然不工作:( – Pipo 2012-02-03 08:54:59

1

使用此,

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。

+0

感谢您的回复,仍然有同样的问题,网址显示为没有任何变化 – Pipo 2012-02-03 09:03:19

+0

看到我的更新。您正在传递'state_',但匹配'state_name'。 – 2012-02-03 09:32:59

+0

再次感谢,我还没有达到这个目标,但有些问题,但我还没有发现它。 – Pipo 2012-02-03 15:01:05

0

这是一个基于递归的通用解决方案无论查询字符串多长时间都可以工作。通过更换每个&=查询字符串来连字符-/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重定向到。

+0

谢谢,我会尽快尝试 – Pipo 2012-02-03 18:13:26