我打开了一个通配符子域,它显示了具有相同名称的子文件夹。例如,输入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]
答案 0 :(得分:1)
这是因为mod_dir
在mod_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]