2011-04-12 163 views
0

我的网址是:的.htaccess重写正则表达式的正则表达式

http://www.domain.com/Seattle_WA_math 

它需要指向:

http://www.domain.com/list.php?city=Seattle&state=WA&s=math 

这里是我到目前为止,没有工作...

RewriteRule ^[A-Za-z_\-]+_[A-Z]{2}_[A-Za-z0-9_\-\(\)]+\/$ list.php?city=$1&state=$2&$s=$3 [L] 
+0

'$ s'究竟是什么? – 2011-04-12 06:12:14

回答

0

这应做到:

RewriteRule ^([A-Za-z\-]+(?:_[A-Za-z\-]+)*)_([A-Z]{2})_([A-Za-z0-9_\-\(\)]+)\/?$ list.php?city=$1&state=$2&$s=$3 [L] 

允许多个城市的措辞和主题,并可选尾随/路径。

0

我输入这个动态,但它应该工作。

重写规则^([A-ZA-Z - ] +)?([AZ] {2})([A-ZA-Z0-9 _-] +)$ list.php的城市= $ 1 &状态= $ 2 & s = $ 3

()指定在结束部分的$#变量,所以匹配的所有东西都应该排队。

+0

它没有工作...得到了404找不到错误。我将脚本改为RewriteRule ^([a-zA-Z - ] +)_([AZ] {2})_([a-zA-Z0-9 _-] +)\/$ list.php?city = $ 1&state = $ 2&s = $ 3 [L]并且它已经加载,但是没有一个变量被抓到了 – Jeffrey 2011-04-12 03:48:26

0

在.htaccess文件试试这个:

RewriteEngine on 
Options +FollowSymlinks -MultiViews 
RewriteRule ^([A-Za-z-]+(?:_[A-Za-z-]+)*)_([A-Z]{2})_([A-Za-z0-9_-]+)/?$ /list.php?city=$1&state=$2&s=$3 [R,L,QSA,NE] 

R=301将HTTPS状态重定向301
L将最后一条规则
NE是无法回避的查询字符串
QSA将追加现有查询参数

$1,$2$3是集团在您的REQUEST_URI

+0

一个小问题......一些城市和科目会有2或3个单词。 http://www.domain.com/New_York_NY_algebra_1 – Jeffrey 2011-04-12 04:38:32

+0

@Jeffrey:我编辑了上面的答案,以处理城市名称和主题字符串中的多个'_'。 – anubhava 2011-04-12 12:19:23