用相对路径重写

时间:2013-05-21 09:48:01

标签: apache url mod-rewrite url-rewriting rewrite

我对本地机器上的reqrite规则感到疯狂......

我甚至启用了重写日志,这就是我应该重写的url上的单页加载:

ip - - [21/May/2013:08:13:18 +0200] [scxx/sid#7f6580ce32b8][rid#7f65810069e0/initial] (2) init rewrite engine with requested uri /catdev/sc/eprocure/ajax/ArticleSearch/SearchEngine/GetInitialData
ip - - [21/May/2013:08:13:18 +0200] [scxx/sid#7f6580ce32b8][rid#7f65810069e0/initial] (3) applying pattern '^/catdev/sc/eprocure/ajax/(.+)/(\w+)/(\w+?)$' to uri '/catdev/sc/eprocure/ajax/ArticleSearch/SearchEng$
ip - - [21/May/2013:08:13:18 +0200] [scxx/sid#7f6580ce32b8][rid#7f65810069e0/initial] (2) rewrite '/catdev/sc/eprocure/ajax/ArticleSearch/SearchEngine/GetInitialData' -> '/catdev/sc/eprocure/ajax/handler.php?pa$
ip - - [21/May/2013:08:13:18 +0200] [scxx/sid#7f6580ce32b8][rid#7f65810069e0/initial] (3) split uri=/catdev/sc/eprocure/ajax/handler.php?path=ArticleSearch&class=SearchEngine&method=GetInitialData -> uri=/catde$
ip - - [21/May/2013:08:13:18 +0200] [scxx/sid#7f6580ce32b8][rid#7f65810069e0/initial] (2) local path result: /catdev/sc/eprocure/ajax/handler.php
ip - - [21/May/2013:08:13:18 +0200] [scxx/sid#7f6580ce32b8][rid#7f65810069e0/initial] (1) go-ahead with /catdev/sc/eprocure/ajax/handler.php [OK]

路径被正确找到,但它仍然无法加载它应该的页面。我不明白为什么!

错误日志告诉我这个。

[Tue May 21 08:13:18 2013] [error] [client xxx.xxx.xxx.xx] File does not exist: /catdev/sc/eprocure

现在我有了我的apache配置重写规则:

<VirtualHost *:80>
        ServerAdmin webmaster@xxx.at
        ServerName xxx
        DocumentRoot /data1/www/somewherefarbeyond/ssl-htdocs

        <Directory /data1/www/somewherefarbeyond/ssl-htdocs/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ErrorLog /data1/www/somewherefarbeyond/logs/error.log

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

        CustomLog /data1/www/somewherefarbeyond/logs/access.log combined


        RewriteEngine On
         RewriteRule ^/catdev/sc/eprocure/ajax/(.+)/(\w+)/(\w+?)$      /catdev/sc/eprocure/ajax/handler.php?path=$1&class=$2&method=$3 [L]
        RewriteLog /data1/www/somewherefarbeyond/logs/accessREWRITE.log
        RewriteLogLevel 9

</VirtualHost>

是否可以为这件事轻拍一些光?

他正在尝试的是xxx / catdev / sc / eprocure / ajax / ArticleSearch / SearchEngine / GetInitialData

注意xxx是来自我的开发服务器的手动owerwriten doman,并且ips被阻止了。

1 个答案:

答案 0 :(得分:0)

该死的。

我是一个debian“功能”

我在debian发行版上工作,当你在基本配置中进行重写时,你必须指定整个DIRECTORY路径而不是相对路径。

只需将重写网址设为目录位置而不是网址!

示例是:

您的www文件夹位于

/motherofGod/wtf/www

您的www root在apatche中设置为/motherofGod/wtf/www

您的域名是lols.com

所以文件lols.com/lol/wtf

需要转到/motherofGod/wtf/www/some/crap/handler.php

您必须指定WHOLE路径而不仅仅是www目录~_~

的相对路径