admin重写目录的URL重写

时间:2012-11-21 09:27:08

标签: .htaccess mod-rewrite rewrite

我有一个URL重写设置来创建漂亮的URL

RewriteCond %{REQUEST_URI} !^\/*(index\.php|blog|admin\/assets|site\/assets|robots.txt|sitemap.xml|products.xml|favicon\.ico)
RewriteRule ^(.*)$ /index.php?rq=$1 [L,QSA]

当我使用/admin访问管理区域时,URL被重写为/admin/?rq=admin,因为我有一个名为“admin”的根级目录。它可能非常简单,但我如何编辑(或添加)我的.htaccess规则,以便将网址清晰地写为/admin/

更新: 为了澄清,我想使用/index.php?rq=admin访问/ admin而不是通过调用/admin/index.php

这是我的apache virtualhost config:

<VirtualHost *:80>
        ServerAdmin alex
        ServerName hub
        ServerAlias hub
        DocumentRoot /var/www/hub/
        <Directory />
                Options FollowSymLinks
                AllowOverride All
        </Directory>
        <Directory /var/www/hub>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

2 个答案:

答案 0 :(得分:2)

只需将admin文件夹添加到RewriteCond的例外列表中即可。现在,admin/assets有例外情况,因此您可以删除assets部分并保留整个admin文件夹的例外情况,如下所示:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^\/*(index\.php|blog|admin|site\/assets|robots.txt|sitemap.xml|products.xml|favicon\.ico)
RewriteRule ^(.*)$ /index.php?rq=$1 [L,QSA]

答案 1 :(得分:1)

似乎在我的.htaccess中添加DirectorySlash Off就可以了。不确定这是否是正确的解决方法,但它解决了我的特定问题。我必须确保完全清除缓存以防止缓存重定向(感谢卡米尔)

在Chrome中:Chrome-> Tools -> Clear Browsing Data -> Empty the Cache