我正在mod-rewrite
中使用.htaccess
来实现干净/漂亮的网址。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ details.php?id=$1 [L,QSA]
RewriteEngine On
启动引擎。
RewriteCond %{REQUEST_FILENAME} !-f
不会重写任何内容
请求文件名存在,并且是一个文件。
RewriteCond %{REQUEST_FILENAME} !-d
不会重写任何内容
请求文件名存在,并且是一个目录。
RewriteRule ^([^/]+)/?$ details.php?id=$1 [L,QSA]
这是实际的
重写规则。域名之后需要任何东西(任何东西
除了正斜杠之外),并将其重写为details.php
,传递
它作为id
参数。
RewriteRule ^([^/]+)/?$ details.php?id=$1 [L,QSA]
在 http://www.domain.com/texas
这很好。 我需要的是我的请求网址如下所示: 的 http://www.domain.com/location/texas
和details.php
具有以下代码
<?php
$id = $_GET["id"];
echo "new id is ".$id;
?>
问题:我无法写出有效的.htaccess
RewriteRule
来识别此请求http://www.domain.com/location/texas
。
请帮忙。
我尝试了什么?
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^location/?$ details.php?id=$1 [L,QSA]
- 无法正常工作
RewriteRule ^location/[a-z][-a-z0-9]*?$ details.php?id=$1 [L,QSA]
- 正常工作,但id
显示为空白。
答案 0 :(得分:1)
您可以通过启动location/
可选项来调整现有规则:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(?:location/)?([^/]+)/?$ details.php?id=$1 [NC,L,QSA]