删除最后一个斜杠和扩展,并通过htaccess处理错误页面

时间:2016-12-07 14:58:58

标签: php apache .htaccess

我的网站中有许多目录,例如test,所以当我使用domain.com/test打开我的网站时,它会给我domain.com/test/ 我希望删除最后一个斜杠< /强>

我还想删除扩展名,以便在我打开page.php这样的页面时 它给了我domain.com/page

此外,我想将所有错误页面发送到domain.com/error404 我确实已将非http的代码添加到https

这是我目前的尝试:

RewriteEngine On 
RewriteBase / 
Options All -Indexes

RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.domain.com/$1 [R,L]

ErrorDocument 403 /www.domain.com/error404.php
ErrorDocument 404 /https://www.domain.com/error404.php

https工作正常但我也想删除最后一个斜杠和扩展并处理当前不起作用的错误页面。

2 个答案:

答案 0 :(得分:0)

您可以使用以下命令转换目录斜杠:

DirectorySlash Off

或者您可以删除该跟踪斜杠:

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

并重定向错误可以是:

ErrorDocument 404 /path/to/error404

答案 1 :(得分:0)

您可以在站点根目录中使用这些规则.htaccess:

ErrorDocument 403 /error404.php
ErrorDocument 404 /error404.php

RewriteEngine On

# redirect to https
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^ https://www.domain.com%{REQUEST_URI} [R=301,L,NE]

# remove index.php
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} /index\.php [NC]
RewriteCond %{REQUEST_URI} ^(.*/)index\.php$ [NC]
RewriteRule ^ %1 [L,R=301,NE]

# To externally redirect /dir/file.php to /dir/file
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} \s/+(.+?)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=301,NE,L]

# To internally forward /dir/file to /dir/file.php
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.+?)/?$ $1.php [L]