大多数用于重定向和删除文件扩展名或动态网址。
问题是我无法获得一个简单的静态网址来重命名
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]
一切都有魅力!
答案 0 :(得分:2)
我发现有多个问题正在发生。首先,正则表达式与用户键入的友好URL匹配。因此,您需要相互交换友好的URL和文件路径。友好或“假”名称在左侧,而重定向的URL默默地在右侧。另外,请确保将目录库设置为/
。最后,添加[L]
以强制它成为最后一条规则,以防同一文件中的任何内容尝试重写路径。请注意,即使强制执行规则具有最后一条规则,也会检查其他htaccess文件,这取决于文件位置。还完全破坏了选项部分。试一试:
RewriteBase /
RewriteEngine On
RewriteRule ^FriendlyNamed.html FileIWantToChange.html [L]
答案 1 :(得分:0)
RewriteRule ^ fileThathasalongname.html file.html