尾随斜杠版本的网站提供500服务器错误 - 如何重定向到非尾部斜杠版本

时间:2017-03-21 18:40:21

标签: php .htaccess redirect mod-rewrite

我已经建立了一个新的自定义设计网站,取代了一个旧的wordpress网站,其中每个网页的网址末尾都有一个斜杠

我在根目录和子文件夹中的.htaccess文件中添加了代码,以删除.php文件扩展名(工作正常),并将带有斜杠的版本的任何流量重定向到版本而不带斜杠

但是,特别是在我的服务中#34;子文件夹,当我从htaccess中取出代码时会导致404错误或500个服务器错误,我想要的是旧页面显示没有理想的尾随斜线,但尝试了很多方法我没有运气

当我输入正确的代码时,它会将URL重定向到没有子文件夹名称的URL,因此会出现404错误。我做错了什么?

我应该尝试不同的方法,还是只是犯了一个愚蠢的错误?

这是来自htaccess的代码:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /services/



RewriteRule ^index\.php$ - [L]


</IfModule>

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php

我添加了以下内容以重定向到非尾部斜杠版本:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ /$1 [NE,R=301,L]

导致网站重定向到没有子文件夹名称的网址,显然会导致404错误

我已经围绕这个圈了一段时间,所以如果有人可以请建议我可以做什么来将所有流量重定向到尾随斜杠网址到非尾随斜杠网址(存在的版本),这将是伟大的,感谢

1 个答案:

答案 0 :(得分:1)

您可以使用:

RewriteEngine On
RewriteBase /services/

RewriteRule ^index\.php$ - [L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ $1 [NE,R=301,L]

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.+?)/?$ $1.php [L]

请确保在栏杆斜线重定向规则/之前删除$1,如上所示。