我正试图通过example.com
将www.example.com
重定向到.htaccess
:
RewriteCond %{HTTP_HOST} ^example.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
问题:my-site.com/contact.html
重定向到www.example.com/index.php
而不是www.example.com/contact.html
。
我该如何实现?
更新:这是我的Joomla网站的完整.htaccess
(评论已删除):
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule .* index.php [F]
###### this is the code in question...
RewriteCond %{HTTP_HOST} ^example$ [NC]
RewriteRule ^(.*)$ http://www.example/$1 [R=301,L]
# RewriteBase /
## Begin - Joomla! core SEF Section.
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{REQUEST_URI} !^/index\.php
RewriteCond %{REQUEST_URI} /component/|(/[^.]*|\.(php|html?|feed|pdf|vcf|raw))$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]
# take care of sitemap.xml
RewriteCond %{REQUEST_URI} ^/sitemap.xml
RewriteRule .* /index.php?option=com_xmap&view=xml&tmpl=component&id=1&format=html [L]
我在RewriteEnigine On
下方移动了两条线 - 但又遇到了同样的问题。无能。
答案 0 :(得分:2)
问题:example.com/contact.html重定向到www.example.com/index.php而不是www.example.com/contact.html。
我猜你的htaccess文件中有其他规则,它将一切都路由到index.php。您需要确保您的重定向规则之前您拥有的任何其他规则。
检查htaccess文件后,您需要在第一条规则的末尾添加L
标记:
RewriteRule .* index.php [F,L]
因为没有它,即使第一个规则被应用,重定向也会被应用(例如,在队列中等待403响应时,它会被重写为index.php
。)
答案 1 :(得分:1)
首先取消注释行
# RewriteBase / //Remove #
在上面一行下面写下这段代码
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
答案 2 :(得分:0)
我想我已经错了要求澄清,但你可以删除它。
RewriteCond%{HTTP_HOST}!^ www.example.com $ [NC]
我看到你添加了一个感叹号,我已经在没有它的地方看到了这个重定向。感叹号在这种情况下做了什么或者是不正确的?
度过美好的一天。