2012-02-02 103 views
1

我很努力在网站上实施网址更改。首先,我只想在子目录级别实现此URL更改。我已将WordPress安装在根目录下,但我正在创建自定义分类部分。这位于目录/ classifieds /中。结果我只想重写这个子目录中的URL。无法传递重写网址的查询字符串值

我已经设法得到正确的重写工作正常的分类子目录301所需的执行和追加斜杠添加搜索引擎优化。我唯一的问题是我的页面没有传递查询字符串值。我如何修改下面的.htaccess代码,以便在页面之间传递查询字符串?

IndexIgnore * 

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/]+)/$ $1.php 
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php 

RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^/]+/)*[^.]+\.php(\?[^\ ]*)?\ HTTP/ 
RewriteRule ^(([^/]+/)*[^.]+)\.php$ http://www.mysite.com/classifieds/$1 [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$ 
RewriteRule (.*)$ http://www.mysite.com/classifieds/$1/ [R=301,L] 

redirect 301 /classifieds/index/ http://www.mysite.com/classifieds/ 

在此先感谢您的帮助!

+0

你能否提供一个不传递查询字符串的URL的例子 – 2012-02-02 14:01:04

回答

0

您需要添加[QSA]查询字符串附加

EDIT

重写规则^(([^ /] + /)* [^。] +)。PHP $ http://www.mysite.com/classifieds/ $ 1 [R = 301 ,L,QSA]

重写规则(。*)$ http://www.mysite.com/classifieds/ $ 1/[R = 301,L,QSA]

+0

我非常多初学者,你能否告诉我代码中的哪一行需要[QSQ]加入... – Chris 2012-02-02 13:10:55

+0

@Chris查看更新回答 – ianbarker 2012-02-02 13:17:20

+0

I已经尝试了您的建议,但我仍然遇到困难。添加了[QSA]后,我得到以下URL输出:http://www.mysite.com/classifieds/view-ad/?user = 0001 – Chris 2012-02-02 14:18:22

0

如果我正确理解这一点,你希望查询字符串通过多个页面持久化,对吧?如果是这样,我知道这样做的唯一方法是输出页面上的所有链接并附加查询字符串,这意味着这将在您的PHP文件中完成。

要做到这一点,你应该输出链接应附加到URL的末尾urlencode($_GET)