使用.htaccess文件重命名网址

时间:2013-05-03 11:02:36

标签: apache .htaccess url-rewriting

大多数用于重定向和删除文件扩展名或动态网址。

问题是我无法获得一个简单的静态网址来重命名

Options +FollowSymlinks
RewriteEngine On
RewriteRule ^fileThathasalongname file.html

我目前拥有'mysite.co.uk/fileThathasalongname.html'

我想要的是'mysite.co.uk/file/' while file = file.html

使用:

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteRule ^FileIWantToChange.html FriendlyNamed.html

使用这个给我错误多个选择

+++++++++++++++++编辑+++++++++++++++++++++++++

以为我会添加我的最终版本供人们查看,这可能会有所帮助,下面的回答是正确的。

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]

RewriteRule ^FriendlyNamed.html FileIWantToChange.html [L]

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

RewriteCond %{HTTP_HOST} ^www.mysire.co.uk [NC]
RewriteRule ^(.*)$ http://mysite.co.uk/$1 [L,R=301]

一切都有魅力!

2 个答案:

答案 0 :(得分:2)

我发现有多个问题正在发生。首先,正则表达式与用户键入的友好URL匹配。因此,您需要相互交换友好的URL和文件路径。友好或“假”名称在左侧,而重定向的URL默默地在右侧。另外,请确保将目录库设置为/。最后,添加[L]以强制它成为最后一条规则,以防同一文件中的任何内容尝试重写路径。请注意,即使强制执行规则具有最后一条规则,也会检查其他htaccess文件,这取决于文件位置。还完全破坏了选项部分。试一试:

RewriteBase /
RewriteEngine On
RewriteRule ^FriendlyNamed.html FileIWantToChange.html [L]

答案 1 :(得分:0)

RewriteRule ^ fileThathasalongname.html file.html