删除最后一个斜杠时,HTACCESS很奇怪

时间:2014-09-18 17:13:13

标签: regex apache .htaccess mod-rewrite

我打开了一个通配符子域,它显示了具有相同名称的子文件夹。例如,输入works.gincher.net/launch/index.php会在www.gincher.net/works/launch/index.php中显示。有用。

当网址没有以文件结尾(不是index.php)时,问题就开始了,并且在同一时间它没有以slesh /结束。例如,如果您输入works.gincher.net/launch,则会将浏览器中的网址更改为works.gincher.net/works/launch/。我不希望URL发生变化。我想要它与打字完全一样。那有什么问题呢?

以下是我的.htaccess文件内容:

DirectoryIndex index.html index.htm index.php default.html Index.html Index.htm home.html 

ErrorDocument 400 /error.php
ErrorDocument 401 /error.php
ErrorDocument 402 /error.php
ErrorDocument 403 /error.php
ErrorDocument 404 /error.php

RewriteEngine On

RewriteCond %{HTTP_HOST} ^gincher\.net$
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^((?!www\.)[^.]+)\.gincher\.net$
RewriteCond %1::%{REQUEST_URI} !^(.*?)::/\1/?
RewriteCond %1::%{REQUEST_URI} !error.php$
RewriteRule ^(.*)$ /%1/$1 [L,QSA]

1 个答案:

答案 0 :(得分:1)

这是因为mod_dirmod_rewrite规则之后添加了一个尾部斜杠并进行了重定向。

试试这个:

DirectoryIndex index.html index.htm index.php default.html Index.html Index.htm home.html 
DirectorySlash off
ErrorDocument 400 /error.php
ErrorDocument 401 /error.php
ErrorDocument 402 /error.php
ErrorDocument 403 /error.php
ErrorDocument 404 /error.php

RewriteEngine On

RewriteCond %{REQUEST_URI} !(/$|\.)
RewriteRule (.*) %{REQUEST_URI}/ [R=301,L]

RewriteCond %{HTTP_HOST} ^gincher\.net$
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f    
RewriteCond %{HTTP_HOST} ^((?!www\.)[^.]+)\.gincher\.net$
RewriteCond %1::%{REQUEST_URI} !^(.*?)::/\1/?
RewriteCond %1::%{REQUEST_URI} !error.php$
RewriteRule ^(.*)$ /%1/$1 [L]