0

我有一个简单的文件 mydomain.com/business_nottingham.html,我想将其重新写入一个 SEO 友好的 URL,例如 mydomain.com/business-nottingham/

我搜索了所有示例,但它们似乎是为 CMS 或 PHP 脚本设计的。

是否有一个简单的 .htaccess 重写示例可以让我像上面那样做一些非常简单的事情?

编辑:我终于设法找到以下代码

Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\.html$ /$1 [L,R=301] 

但是,它仍然无法正常工作。如果我输入整洁的 URL,我会被重定向到 404 页面,但是输入准确的 .html 文件名可以让我找到正确的文件,但不会为我提供干净的 url。

我通过阅读各种文章和教程尝试了上述各种组合,但由于某种原因,它似乎对我不起作用。

4

1 回答 1

1

您只想在实际请求.html文件时重定向,然后您想在内部重写到 html 文件。URL 解析的方式是浏览器显示它认为它要去的地方(地址栏中的 URL),然后向 Web 服务器发出请求。如果网络服务器(htaccess 文件所在的位置)想要更改浏览器 URL 地址栏中的内容,它需要告诉浏览器从字面上加载一个完全不同的 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] 
于 2013-04-16T17:44:21.347 回答