htaccess始终使用根文件夹规则

时间:2015-10-16 22:21:26

标签: php .htaccess

我正在尝试为我的php搜索页面创建一些不错的网址。

我目前的代码:

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.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

2 个答案:

答案 0 :(得分:1)

从请求字符串的开头删除斜杠/,如下所示:

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

答案 1 :(得分:0)

首先放置第二条规则,并将正则表达式括在引号中。

当它匹配^ / search-jobs / jobs-in(。*)/?$时,[L]标志表示不继续,所以它不会处理^ / search-jobs /?$