MOD_REWRITE帮助!

时间:2010-05-07 17:36:22

标签: php mysql apache .htaccess mod-rewrite

我想使用模式重写来显示以下内容: mydomain.com/Florida/Tampa/而不是mydomain.com/place.php?state=Florida&city=Tampa

我已经做到了这一点:(因为我觉得它可能会有所作为!) mydomain.com/ [name ].html而不是mydomain.com/profile?user=[name]

这是代码!

Options +FollowSymLinks  
Options +Indexes 
RewriteEngine On 

RewriteBase /  
RewriteCond %{SCRIPT_FILENAME}! !-f  
RewriteCond %{SCRIPT_FILENAME}! !-d  
RewriteRule (.*).html profile.php?user=$1 [QSA.L]

2 个答案:

答案 0 :(得分:2)

您应该尽可能地使您的模式具体化。所以试试这些规则:

# stop rewriting process if request can be mapped to file or directory
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

# get user pages
RewriteRule ^([^/]+)\.html$ profile.php?user=$1 [L,QSA]

# get paces
RewriteRule ^([^/]+)/([^/]+)/$ place.php?state=$1&city=$2 [L,QSA]

我在这里使用[^/]+(除了/之外的一个或多个任意字符)。但是,如果您只想允许特定字符,则应在模式中反映出来(请参阅webdestroya的提案)。

您还应该确保使用明确的URI。在考虑规则之前,您应该开发一个运行良好的URI结构。你知道,Cool URIs don’t change

答案 1 :(得分:0)

添加:

RewriteRule ^([a-zA-Z]+)/([a-zA-Z]+)/ place.php?state=$1&city=$2 [L,QSA]