我有一个简单的文件mydomain.com/business_nottingham.html 我想重新写一个SEO友好的URL,例如mydomain.com/business-nottingham /
我已经搜索了所有示例,但它们似乎是针对CMSes或PHP脚本设计的。
是否有一个简单的.htaccess重写示例可以让我做一些非常简单的事情?
编辑:我最终找到了以下代码
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\.html$ /$1 [L,R=301]
然而,它仍然不太有用。如果我输入整洁的URL,我会被重定向到404页面,但是输入确切的.html文件名会让我找到正确的文件,但不会给我一个干净的网址。
我通过阅读各种文章和教程尝试了上述的各种组合,但由于某种原因,它似乎对我不起作用。
答案 0 :(得分:1)
您只想在实际请求是.html
文件时重定向,然后您想在内部重写到html文件。 URL解析的方式是浏览器显示它认为它的位置(地址栏中的URL),然后请求Web服务器。如果网络服务器(htaccess文件所在的位置)想要更改浏览器的URL地址栏中的内容,则需要告诉浏览器逐字加载完全不同的URL。然后,浏览器将请求新网址。然后服务器必须在内部将该URL重写回实际资源所在的位置(第一个URL),但浏览器不会看到这种情况发生。
RewriteEngine On
RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /([^\ ]+)\.html
RewriteRule ^ /%2/ [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/(.*?)/?$
RewriteCond %{DOCUMENT_ROOT}/%1.html -f
RewriteRule ^ /%1.html [L]