我打算在我的网站上实现这个.htaccess代码(感谢anubhava):
RewriteEngine on
rewritecond %{http_host} ^mydomain.com [nc]
rewriterule ^(.*)$ http://mydomain.com/$1 [r=301,nc]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\.html\ HTTP/
RewriteRule ^(.*)\.html$ /$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1\.html -f [NC]
RewriteRule ^(.+?)/?$ $1.html [L]
ErrorDocument 404 /404.html
基本上它会将URL从“www.mydomain.com/this-page.html”更改为“www.mydomain.com/this-page” - 它确实做得很好。
但是,我遇到了一个问题 - 让我说我的一个页面是“treatments.html”。
网址将看起来像“mydomain.com/treatments”,这很好。但我还想制作一个名为“治疗”的目录,并在该文件夹中包含可用治疗的列表,它看起来像这样
"mydomain.com/treatments/treatment-one"
"mydomain.com/treatments/treatment-two"
"mydomain.com/treatments/treatment-three"
依旧......
问题是: 当我尝试访问文件“treatments.html”时,浏览器将其与目录混淆,服务器发送消息[403]禁止。
任何解决方案的想法?
答案 0 :(得分:0)
好的,将您的上一条规则改为:
DirectorySlash On
ErrorDocument 404 /404.html
RewriteEngine on
RewriteBase /
rewritecond %{http_host} !^mydomain\.com$ [nc]
rewriterule ^(.*)$ http://mydomain.com/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\.html\ HTTP/
RewriteRule ^(.*)\.html$ /$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1\.html -f [NC]
RewriteRule ^(.+?)/?$ $1.html [L]