将带有html扩展名的文件重定向到没有扩展名的文件(在url中)

时间:2012-02-13 13:29:40

标签: .htaccess redirect

我最近使用htaccess更改了我的网站网址,以便我的网址不会显示文件扩展名。现在我的问题是因为我创建了一个新的xml站点地图,所以我的url将是无扩展的! Google网站管理员工具告诉我有关重复内容的问题!!即。 page和page.html有相同的标题....所以我的问题是如何将带有文件扩展名html的网址重定向到带有扩展名的网址! 这是我的网站网址的示例,其中包含html扩展名

http://www.shenazhpeyk.co.uk/coding-machines.html

我想重定向并将其更改为

http://www.shenazhpeyk.co.uk/coding-machines

这样可以解决Google网站管理员工具的问题(请提供我在htaccess文件中使用的代码)

非常感谢

3 个答案:

答案 0 :(得分:2)

也找到了这段代码。不确定它是否会完成同样的事情。似乎对我有用,如上所述(对于PHP)。

RewriteEngine On

# Unless directory, remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/$ /$1 [R=301,L]

# Redirect external .php requests to extensionless url
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ /$1 [R=301,L]

# Resolve .php file for extensionless php urls
RewriteRule ^([^/.]+)$ $1.php [L]

我想知道尾随斜杠以及那些是否应该存在或省略?

答案 1 :(得分:0)

尝试将以下内容添加到网站根目录中的.htaccess文件中,并使用.html扩展名重定向网址,然后将其删除。

RewriteEngine on
RewriteBase / 

#redirect to remove the .html extension
RewriteRule ^(.+)\.html$ $1 [L,NC,R=301] 

答案 2 :(得分:0)

试试这个:

Options +FollowSymLinks -MultiViews
DirectorySlash Off

RewriteEngine On

RewriteCond %{SCRIPT_FILENAME}/ -d
RewriteCond %{SCRIPT_FILENAME}.html !-f
RewriteRule [^/]$ %{REQUEST_URI}/ [R=301,L]

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^(.+)\.html$ /$1 [R=301,L]

RewriteCond %{SCRIPT_FILENAME}.html -f
RewriteRule [^/]$ %{REQUEST_URI}.html [QSA,L]