PHP重写SEO友好URL - 内部文件夹

时间:2014-12-28 09:38:34

标签: apache .htaccess mod-rewrite

这是一个php mod重写相关问题

背景资料:

我在我的root中使用wordpress网站(example.com) 我有一个名为' search-jobs'创建的文件夹,其中包含所有的PHP代码(example.com/search-jobs)我没有在此搜索页面上使用wordpress进行任何操作,但希望确保你有这些信息,如果它影响。

我正在尝试重写以下网址:

http://example.com/search-jobs/?searchText=FACEBOOK+INC.&searchCity=Enter+US+City+or+Zipcode&searchYear=14&action=search&searchJobTitle=Enter+Job+Title+%2F+Role+Name

我在.htaccess文件中写了下面的mod重写,该文件放在root文件夹中,其中安装了wordpress。

# BEGIN search Rewrite rules 
<IfModule mod_rewrite.c>
RewriteEngine On

RewriteRule ^company/([0-9a-zA-Z_-\s]+)/([0-9a-zA-Z_-\s]+)/([0-9]+)/([0-9a-zA-Z_-\s]+)/([0-9a-zA-Z_-\s]+)$ /search-jobs/?searchText=$1&searchCity=$2&searchYear=$3&action=$4&searchJobTitle=$5 [NC,L]

</IfModule>

# END search Rewrite rules

此外,四个变量通常都有空格,因为它们是搜索字符串。不确定,如果这是导致问题。

以下是排除文件夹

的完整Wordpress重写规则
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_URI} !^/(search-jobs|search-jobs/.*)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

我在.htaccess文件中看到了一些wordpress重写规则,这是弄乱我的重写规则还是我做错了什么?我这是第一次这样做。我已经尝试了几天这个阅读许多其他,严重卡住。任何帮助都会很棒。

1 个答案:

答案 0 :(得分:1)

像这样拥有root WP .htaccess:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^(index\.php|search-jobs(/.*)?)$ - [L,NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

然后在/search-jobs/.htaccess里面有这样的代码:

RewriteEngine On
RewriteBase /search-jobs/

RewriteCond %{THE_REQUEST} \?searchText=([^\s&]+)&searchCity=([^\s&]+)&searchYear=(\d+)&action=([^\s&]+)&searchJobTitle=([^\s&]+) [NC]
RewriteRule ^ %1/%2/%3/%4/%5? [R=302,L,NE]

RewriteRule ^([^/]+)/([^/]+)/(\d+)/([^/]+)/([^/]+)/?$ ?searchText=$1&searchCity=$2&searchYear=$3&action=$4&searchJobTitle=$5 [NC,L,QSA]