2014-04-03 57 views
1

我有以下目录结构:重写规则未正确执行

public_html/sites/site_a/ 
public_html/sites/site_b/ 

我想写一个.htaccesssite_a用于重写的URL。我在site_a根目录下面的坐姿:

Options +FollowSymLinks 
RewriteEngine On 
RewriteRule \?page=([a-z]*) $1 [L,QSA] 

基本上我想有我的网址:

http://hostname/sites/site_a/?page=products 

显示为:

http://hostname/sites/site_a/products 

尽管如此,这并不似乎工作。该页面显示完整的网址。

+0

您不能像这样在重写规则中访问GET参数。实际上,它们不是网址的一部分。这是记录。但是您可以评估模块为此提供的QUERY_STRING。阅读优秀的文档,它都在那里解释! – arkascha

回答

1

尝试:

RewriteEngine On 
RewriteBase /sites/site_a/ 

RewriteCond %{THE_REQUEST} \ /+sites/site_a/\?page=([^&\ ]+) 
RewriteRule^%1? [L,R] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)$ ?page=$1 [L,QSA] 
在htaccess文件

site_a目录。

+0

OMG ...起初我开始认为我的主人不支持mod_rewrite ......但是,您先生,是一位绅士和一位学者。非常感谢。现在我要研究这个答案,并逐个找出你做了什么,为什么你做了。谢谢!!! – JTFRage

+0

其实现在有一个新问题。这个'http:// hostname/sites/site_a /?page = products'成为这个:'http:// hostname/sites/site_a/products' ...这是正确的。但是当我点击我网站上的另一个链接时,它显示了这个:http:// hostname/sites/site_a/products?page = products' – JTFRage

+0

@JTFRage第一条规则需要'?page = something'的请求,并且**重定向浏览器**到没有查询字符串的URL。重定向改变了URL地址栏中的内容。第二条规则在内部将其重写**返回查询字符串 –