【问题标题】:MOD REWRITE (BASE) on WAMP ServerWAMP 服务器上的 MOD REWRITE (BASE)
【发布时间】:2013-05-02 16:54:52
【问题描述】:

我有一个激活了重写模块的 WAMP 网络服务器。

我的所有项目都在:

d:/prj/costumer1/www/ (alias: costumer1)
d:/prj/costumer2/www/ (alias: costumer2)
and so on...

对于customer1,我有一个可以正常工作的.htaccess 文件。看起来像这样:

RewriteEngine on
RewriteBase /costumer1/
RewriteRule ^([^/\.]+)/?$ index.php?a=$1 [QSA]
RewriteRule ^([^/\.]+)/?/([[a-zA-Z0-9_-]+)$ index.php?a=$1&b=$2 [QSA]
RewriteRule ^([^/\.]+)/?/([[a-zA-Z0-9_-]+)/?/([[a-zA-Z0-9_-]+)$ index.php?a=$1&b=$2&c=$3 [QSA]

现在,当我创建一个 src/href-link 时,我现在必须使用:

/costumer1/search/book/novell    (aka: costumer1/?a=search&b=book&c=novell)

而不是

/search/book/novell    (aka: costumer1/?a=search&b=book&c=novell)

简而言之:

我不想在每个链接前面都写“/costumer1”:<a href="/costumer1/search/">search</a>

【问题讨论】:

    标签: apache .htaccess mod-rewrite wamp base


    【解决方案1】:

    我在我的根 .htaccess 中做了类似的事情

    RewriteCond %{HTTP_HOST} ^customer1$ [NC]
    RewriteCond %{REQUEST_URI} !^/customer1
    RewriteRule ^(.*)$ customer1/$1 [L,NS]
    

    但最终,我不再使用 .htaccess 处理此问题,因为它的可扩展性较差,而是继续设置 virtual hosts,如下所示:

    <VirtualHost *:80>
      DocumentRoot "D:/htdocs/customer1"
      ServerName customer1
    </VirtualHost>
    
    <VirtualHost *:80>
      DocumentRoot "D:/htdocs/customer2"
      ServerName customer2
    </VirtualHost>
    

    为此,当然要编辑您的主机文件,使其具有如下行:

    127.0.0.1       customer1
    127.0.0.1       customer2
    

    【讨论】:

    • 谢谢 DannyB。你帮我省了一大堆麻烦 :) VirutalHost 就是这样!
    • 太棒了。它确实是一种更简单的完全分离方法。你的 vhost 配置文件应该在 apache\conf\extra\httpd-vhosts.conf 下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-07
    • 1970-01-01
    • 1970-01-01
    • 2012-02-14
    • 1970-01-01
    • 2013-05-24
    相关资源
    最近更新 更多