2016-12-07 50 views
1

处理错误页面我有一个网站,那里有很多目录,如test所以当我打开我的网站domain.com/test它给了我domain.com/test/我想这最后的斜线被删除删除最后一个斜线和扩展并且还通过htaccess的

我也想这样,当我打开像page.php 页它给了我domain.com/page

除了去除进一步扩展,我想所有的错误页面发送给domain.com/error404 我也已经添加代码非httphttps

这是我目前的尝试:

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工作正确,但我也想删除最后的斜杠和扩展名,并处理目前不工作的错误页面。

+0

从指向目录的URL中删除尾部斜杠是一个安全问题。 – anubhava

+0

@anubhava请为这些东西建议我一些东西,我不想扩展名,不想显示index.php文件以及错误页面error404.php。 – LIsa

+0

好的检查下面的答案。 – anubhava

回答

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] 
+0

先生,我不想在URL中显示任何索引。现在我是它像domain.com/index/ 并且图像也不加载,因为网站中没有索引文件夹。 可以从网址隐藏索引使其像domain.com或domain.com/folder-name – LIsa

+0

我认为提交表单时发布数据存在问题.. PLease更新这个先生,表单发布数据有一些问题。 。 – LIsa

+0

ok在POST数据的重定向规则中添加了一个条件。 – anubhava

0

您可以打开目录的斜杠使用:

DirectorySlash Off 

,也可以删除与trailling斜线:

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

和重定向错误可以是:

ErrorDocument 404 /path/to/error404