总之,我们目前在使用htaccess文件时遇到问题。 301重定向将进入新描述的URL,但此外新的URL后跟一个?和旧的URL。我们怎样才能摆脱?和之前的网址,因此它们不会显示为结尾。
我们在网上发现此问题的所有示例都不起作用。有人可以提供一些建议吗?我们可以使用RewriteRule来阻止这种情况发生吗?
这里是htaccess文件的摘要
# begin redirects
# There are redirects of a number of old pages. Here's a sample of them.
redirect 301 /index.html http://www.petersommer.com/
redirect 301 /escorted-archaeological-tours/turkey/western-lycia-cruise-july/ http://www.petersommer.com/escorted-archaeological-tours/
RewriteRule ^gallery/main.php$ http://www.petersommer.com/gallery/ [R=301,L]
RewriteRule ^pdf/how_to_book.pdf$ http://www.petersommer.com/pdf/how-to-book-holiday.pdf [R=301,L]
# end redirects
<IfModule mod_rewrite.c>
RewriteEngine On
Options +FollowSymLinks
DirectoryIndex index.php
RewriteEngine On
RewriteCond $1 !^(images|system|themes|pdf|favicon\.ico|robots\.txt|index\.php) [NC]
RewriteRule ^\.htaccess$ - [F]
RewriteRule ^favicon\.ico - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]
</IfModule>
DirectoryIndex index.php
不幸的是,我不确定什么不起作用或需要做些什么来解决它。我认为它必须是重写规则中的内容,或者我们需要添加一些重写规则来修复它。
不幸的是,所有重定向都添加了?以及新重定向URL末尾的旧URL。例如:
/tours2006.html
的重定向301
/escorted-archaeological-tours/
进入/escorted-archaeological-tours/?/tours2006.html
而不只是/escorted-archaeological-tours/
不幸的是,所有人都遵循相同的模式。
如果您在重写规则中看到任何故障或者可以识别我们需要添加的内容,我将非常感激。
答案 0 :(得分:0)
正如您可能已经注意到的那样,表示为RewriteRule
的两个重定向按预期工作,而两个redirect
指令附加旧路径。
我相信发生了什么
mod_rewrite启动,必要时重定向gallery/main.php
和pdf/how_to_book.pdf
,然后将每个其他URL重写为/index.php?/the_requested_path
并在那里结束(L标志)。请注意查询参数
mod_alias接下来,看到它必须重定向/index.html,例如,它按照指示重定向。但是,默认情况下,Apache重定向并附加查询参数,在这种情况下?/index.html
你能做什么
追加?在重定向指令的末尾(适用于RewriteRule,未在重定向上测试)
redirect 301 /index.html http://www.petersommer.com/?
转换重写规则
中的重定向指令RewriteRule ^index.html$ http://www.petersommer.com/ [R=301,L]
RewriteRule ^escorted-archaeological-tours/turkey/western-lycia-cruise-july/?$ http://www.petersommer.com/escorted-archaeological-tours/ [R=301,L]