2017-04-12 77 views
1

我htaccess的是这样的:htaccess的重写

Options -MultiViews 

RewriteEngine On 
RewriteBase/
Options -Indexes 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L] 

我有这样的老网址:domain.com/site.html ,我愿做一个永久重定向到:domain.com/site(没有的.html)

但究竟发生了什么:domain.com/site?url=site.html 我不知道为什么。也许有人可以帮助我。

+0

此配置不包含任何与'site.html' – Deadooshka

回答

0

您会收到您观察者的结果,因为这正是您实施的结果。

有,与其一试:

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule ^/?(.+)\.html$ /$1 [R=301] 

这条规则集将在您的HTTP服务器(虚拟)主机配置或动态配置文件(.htaccess风格文件)同样的工作。

还有一个常规提示:你应该总是喜欢把这样的规则放在HTTP服务器主机配置中,而不是使用动态配置文件(“.htaccess”)。这些文件出了名的错误,很难调试,他们真的放慢了服务器。它们仅作为最后一种选择,用于您无法控制主机配置的情况(阅读:真正便宜的托管服务提供商),或者您拥有依赖编写自己的重写规则的应用程序(这是一个明显的安全噩梦)。

+0

谢谢你的帮助!不幸的是,如果我尝试你的代码,我会得到一个404(除了首页,根目录以外的每一页)。 – user3924331

+0

好吧,显然如果你重定向到'/ site',你的服务需要能够解决这个问题并对它做出响应。你有什么手段来做到这一点? – arkascha

+0

嗯,不知道该怎么办。但与原始代码服务器响应,并显示例如/网站等 – user3924331