php - MOD_REWRITE 帮助!

标签 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]

最佳答案

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

# 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]

这里我使用[^/]+(除/之外的一个或多个任意字符)。但是如果你只想允许特定的字符,你应该在你的模式中反射(reflect)出来(例如 webdestroya 的提议)。

并且您还应该确保使用明确的 URI。在考虑规则之前,您应该开发一个精心设计的 URI 结构。你知道的,Cool URIs don’t change .

关于php - MOD_REWRITE 帮助!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2790463/

相关文章:

javascript - 单击 PayPal 购买按钮时如何显示 Window.alert

php - 如何在 Symfony 的配置中从服务容器调用方法?

php - 在 mysql 响应的某些字符后添加点 (.)

mysql - 服务器是J2EE Web服务,MySQL是数据库服务器,客户端和J2EE服务器位于不同时区

apache - SSL 大于 40 位的电子商务应用程序的系统要求

php - Laravel PHP fatal error : require(): Failed opening required . .. bootstrap/autoload.php 第 17 行

php - 从表中选择随机数量的记录,其中列值对于mysql中的结果集不重复

c++ - 错误 : stray ‘\302’ in program error while connecting mysql from c++

apache - 如何防止 tomcat7 在 apache 代理设置中重复上下文名称

regex - 如果找不到图像,则显示自定义图像