0

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

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

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]

一切都很有魅力!

4

2 回答 2

2

我看到多个问题正在发生。首先,正则表达式与用户输入的友好 URL 匹配。因此,您需要相互交换友好 url 和文件路径。友好或“假”的名称在左边,而要重定向到的 url 在右边。还要确保您已将目录库设置为/. 最后,最好添加一个[L]以强制它成为最后一条规则,以防同一文件中的任何内容试图重写路径。请注意,根据文件位置的不同,即使执行规则具有最后一条规则,也会检查其他较低的 htaccess 文件。也完全垃圾选项部分。试试这个:

RewriteBase /
RewriteEngine On
RewriteRule ^FriendlyNamed.html FileIWantToChange.html [L]
于 2013-05-03T17:04:45.557 回答
0

RewriteRule ^fileThathasalongname.html file.html

于 2013-05-03T11:06:58.690 回答