5

我正在使用 MSM 插件在两个不同的域名上运行两个 ExpressionEngine 站点。站点一具有所有系统文件等,站点二位于站点一的子文件夹中。我的问题是如何让站点二在 url 中没有它的 index.php 文件并且仍然可以工作?

目前我在站点一的 htaccess 文件夹中有这个,站点一运行良好,站点二没有:

<IfModule mod_rewrite.c>
    RewriteEngine On

    # Removes index.php
    RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /index.php/$1 [L]

    DirectoryIndex index.html index.php

    # Redirect non-www urls to www
    RewriteCond %{HTTP_HOST} !^www\.
    RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

    # If 404s, "No Input File" or every URL returns the same thing
    # make it /index.php?/$1 above (add the question mark)

4

3 回答 3

3

相同的 .htaccess 应该适用于两个站点。重写只涉及 index.php 文件,该文件位于每个站点的根目录中。

我从您的 .htaccess 中看到的一个可能问题是您将非 www URL 重定向到 www。您的第二个域设置是否与 www 一起使用?如果不是,这显然是个问题。

于 2012-11-05T15:49:34.450 回答
1

我在主站点和辅助站点上都使用了这个 htaccess 文件,一切都很好。

AddType video/ogg .ogv
AddType video/mp4 .mp4
AddType video/webm .webm

AcceptPathInfo On

Options -Indexes

<IfModule mod_rewrite.c>
RewriteEngine On

Options +FollowSymLinks

# Looks for files and directories that do not exist
# and provide the segments to the index.php file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^/index.php
RewriteCond $1 !.(css|js|png|jpe?g|gif|ico)$ [NC]
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>  
于 2012-11-05T09:46:51.923 回答
1

试着把你的重写放在# Redirect non-www urls to www重写之前# Removes index.php

在删除 index.php 重写之前进行 www 重写在过去和对我的一个站点的快速测试中给我造成了问题,当 www 重写放置在删除 index.php 重写之前访问 www-version 导致索引.php 不会从 URL 中删除。

于 2012-11-05T15:54:02.133 回答