从xyz.com/?type=test&s=test2重写htaccess到xyz.com/test/test2

时间:2013-02-09 12:53:29

标签: apache .htaccess mod-rewrite url-rewriting

我需要的是搜索内容,因此test2是可更改的,并且需要链接也可以更改。 我怎么能在.htaccess中这样做?

这就是我的想法。

RewriteRule ^xyz.com/test/(.*)$ ^xyz.com/?type=test&s=$1 [NC,L]

任何想法? 谢谢!

我的Wordpress .htacess

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]


RewriteRule ^([^/]+)/(.*)$ index.php?type=test&s=$1 [NC,L]
</IfModule>

# END WordPress

2 个答案:

答案 0 :(得分:0)

你会看到这样的事情:

RewriteRule ^([^/]+)/(.*)$ ?type=$1&s=$2 [NC,L]

但不确定它是否可以在没有文件名的情况下工作。如果是这种情况,请重写处理请求的文件,例如:

RewriteRule ^([^/]+)/(.*)$ index.php?type=$1&s=$2 [NC,L]

您不会在RewriteRule匹配模式中包含域名。

答案 1 :(得分:0)

我猜你必须先在WP规则集中排除它:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# Exclude it here
RewriteCond %{REQUEST_URI}  !/test/  [NC]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress

# and redirect it here:
RewriteCond %{REQUEST_URI}  !index\.php  [NC]
RewriteCond %{REQUEST_URI}  ^/test/([^/]+)/?  [NC]
RewriteRule  .   index.php?type=test&s=%1 [NC,L]

</IfModule>

用上面的规则替换你问题中的整套规则。

根据您的问题,要排除的细分受众群路径为/test/anything,而域名为xyz.com,假设WP规则集相同。