【发布时间】:2015-10-16 22:21:25
【问题描述】:
我正在尝试为我的 php 搜索页面创建一些不错的 url。
我当前的代码:
RewriteRule ^/search-jobs/?$ search-jobs.php [NC,L] # Search jobs page
RewriteRule ^/search-jobs/jobs-in-(.*)/?$ search-results.php?location=$1 [NC,L] # Search results locations page
将 /search-jobs 与 search-jobs.php 匹配,很好 但它也将 /search-jobs/jobs-in-london 匹配到 search-jobs.php,但我希望它匹配 search-results.php 的第二条规则
为什么总是使用第一条规则?以及如何解决?
编辑:
目前的答案都没有奏效。我认为我的问题是我的主机上的某个地方(我无法访问)设置了一些默认值,就好像我只是去 /search-results 一样,它会自动使用 search-results.php 文件,尽管我没有设置任何说明这样做?
因此,理论上,任何 /search-jobs(.*) 查询都会自动使用 search-jobs.php,似乎与我创建的任何规则无关。
不管怎样,我把我的规则重新安排到了下面……我仍然总是点击 search-jobs.php 文件:
RewriteEngine On # Turn on the rewriting engine
RewriteRule ^/search-jobs/jobs-in-(.*)/?$ search-results.php?location=$1 [NC,L] # Search results locations page
RewriteRule ^/search-jobs/(.*)-jobs/?$ search-results.php?keywords=$1 [NC,L] # Search results keywords page
RewriteRule ^/search-jobs/?$ search-jobs.php [NC,L] # Search jobs page
【问题讨论】:
-
RewriteRule模式中仍然有一个前导斜杠。