1

我在根目录中有一个 .htaccess,内容如下:

<IfModule mod_rewrite.c>
    RewriteEngine on
    #RewriteCond %{HTTP_HOST} ^domain.com
    #RewriteRule (.*) http://www.domain.com$1 [R=301,L]
</IfModule>

如果我去http://domain.com/subdir它会重写为http://www.domain.com/subdir

但是我有一个名为“crm”的子目录的问题 - 如果我转到http://domain.com/crm它会将我重定向到http://www.domain.com而不是http://www.domain.com /CRM

在这个“crm”子目录中,我有另一个 .htaccess 文件,它将 .php 扩展名重写为 .html。这是代码:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule ^([^/]*)/([^/]*)\.html$ ?name=$1&id=$2 [L]
    RewriteRule ^(.*).html$ index.php?name=$1 [QSA]
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule ^ - [L]
    RewriteRule ^([^/]*)/([^/]*)\.html$ ?name=$1&id=$2 [L]
</IfModule>

有人可以告诉我如何使这项工作吗?所以当我去http://domain.com/crm时,它会将我重定向到http://www.domain.com/crm

编辑:

Root .htaccess 没问题,我正在更改某些内容,但忘记删除 stackoverflow 的注释。

crm/.htaccess 现在是:

RewriteEngine on 
RewriteOptions Inherit 

RewriteRule ^([^/]*)/([^/]*)\.html$ ?name=$1&id=$2 [L] 
RewriteRule ^(.*).html$ index.php?name=$1 [QSA] 

RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule ^ - [L] 
RewriteRule ^([^/]*)/([^/]*)\.html$ ?name=$1&id=$2 [L] 

但它仍然不会将此子目录重定向到 www.domain.com/crm 而只是重定向到 www.domain.com :(

4

1 回答 1

1

先把root改成.htaccess这个:(目前好像有注释)

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

然后在 crm/.htacess 中添加以下行RewriteEngine on

RewriteOptions Inherit

更新:crm/.htaccess的有问题。用下面的代码替换该内容:

RewriteEngine on 
RewriteOptions Inherit 

RewriteRule ^([^/]*)/([^/]*)\.html$ ?name=$1&id=$2 [L,QSA] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^.]+)\.html$ index.php?name=$1 [QSA,L] 

一旦此代码存在,重定向将按预期发生。

于 2013-09-24T13:04:26.020 回答