2

我的网络应用程序中有这样的 url 模式“ www.mysitename.com/foldername/controller/method ”。并且所有请求的页面首先被重定向到根文件夹上的 index.php,然后它处理请求的页面。但是每当我进入管理面板(www.mysitename.com/admin)时,url都会将“admin”作为文件夹名称,它会向我显示管理员的 index.php(这很正常),然后使用控制器名称或methodname它不会通过 admin 文件夹的 index.php 重定向。

每当我访问“管理员”时,我都想要这种模式中的网址“ www.mysitename.com/admin/foldername/controller/method ”。以及通过 admin 请求的所有页面应首先重定向到 admin 文件夹上的 index.php。这是我的 htaccess 文件-

    Options -Indexes 
    RewriteEngine on

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l

    RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
4

1 回答 1

6

您的管理目录中有.htaccess文件,还是根目录中只有一个文件?您需要在每个目录中都有一个。

我刚刚用你的.htaccessin/htdocs/pro和同样的.htaccessin测试了这个/htdocs/pro/admin,它完全按照你的解释工作。

根 htaccess 在/htdocs/pro/.htaccess

Options -Indexes 
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

管理员 htaccess 在/htdocs/pro/admin/.htaccess

Options -Indexes 
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

单个 htaccess 文件,用于两个 in/htdocs/.htaccess/htdocs/pro/.htaccess

Options -Indexes
RewriteEngine on

# Change '/pro/' if directory is renamed
RewriteBase /pro/

# Change the '/pro/' portion of the condition if directory is renamed 
RewriteCond %{REQUEST_URI} ^/pro/admin(.+)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(.+)$ admin/index.php?url=$1 [QSA,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
于 2013-02-24T05:49:50.890 回答