我有一个这样的网站结构:
www.domain.com
www.domain.com/subpage-a
www.domain.com/subpage-b
www.domain.com/terms
www.domain.com/request-information
我正在尝试配置Apache重写规则,该规则将所有子页面指向主页,条形特定页面。
使用上面的示例,我需要将网站的所有子网页重定向到主页,例如terms
和request-information
页面。
我一直在寻找StackOverflow,我发现了一些无法回答的问题,例如this one和this one。第二个链接似乎有点做我想要的但我不知道如何覆盖我的特定页面的规则。
目前,我的Apache文件如下所示:
<VirtualHost *:80>
ServerName www.domain.co.uk
ProxyPreserveHost On
RewriteEngine On
RewriteRule ^/(.*)$ http://server:8000/VirtualHostBase/http/%{HTTP_HOST}:80/root/site/VirtualHostRoot/$1 [L,P]
</VirtualHost>
<VirtualHost *:80>
ServerName domain.co.uk
Redirect permanent / http://www.domain.co.uk/
</VirtualHost>
为了让这个工作得以实现我附加了这个,只是为了看看我是否可以获得一个子页面来重定向:
<VirtualHost *:80>
ServerName http://www.domain.co.uk/subpage-a
Redirect permanent / http://www.domain.co.uk/
</VirtualHost>
这不起作用,但由于这个网站有很多子页面,我真的希望更多的一个包罗万象的规则,对于某些子页面将被忽略。
这可能,有没有人有任何想法?
感谢。
我正在寻找一种“全能型”Apache重写规则,该规则将重定向每个子页面,将某些页面禁止到域的主页。
关于以下答案,我尝试了以下内容:
我将代码修改为如下所示:
<VirtualHost *:80>
ServerName sub.domain.co.uk
ProxyPreserveHost On
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/(terms|request-information)(/.*|)$ [NC]
RewriteRule ^/(.*)$ http://server:8000/VirtualHostBase/http/%{HTTP_HOST}:80/root/site/VirtualHostRoot/$1 [L,P]
</VirtualHost>
<VirtualHost *:80>
ServerName domain.co.uk
Redirect permanent / http://www.domain.co.uk/
</VirtualHost>
然而,似乎404包含破折号的页面,我可以忍受这个但不幸的是它要求我列出我想要重定向的所有页面来代替上面的terms|request-information
。
我必须保留原来的重写规则,多个重写规则似乎在我的浏览器中给我一个“此网站没有正确重定向”的消息,我对此代码进行了复制并粘贴,修改了详细信息如果有必要,但结果就是错误。
答案 0 :(得分:0)
在VirtualHost
的{{1}}部分,在www.domain.co.uk
行下面插入此代码:
RewriteEngine On
修改强> 多个重写规则似乎会导致重定向错误,只使用一个。
答案 1 :(得分:0)
在你的.htaccess中试试这个
RewriteEngine on
RewriteCond %{HTTP_HOST} !^(.*)\.your_domain\.com$ [NC]
RewriteRule ^(.*)$ http://www.your_domain.com/ [R=301,L]
RewriteCond %{REQUEST_URI} !"^/$"
RewriteRule (.+) http://%{HTTP_HOST}/ [R=301,L]
这将充当所有人。在使用它之前,请确保在httpd.conf中设置重定向。
如果有帮助,请告诉我们。 :)