2012-12-17 108 views
0

所以我花了太多时间在这个 - 有点绝望。mod_rewrite不能与子域

的.htaccess:

Options +FollowSymLinks 
RewriteEngine On 
RewriteRule ^submit/?$ submit.php [NC,L] 

的/ etc/apache2的/网站可用/ applicapple:

<VirtualHost *:80> 
    ServerAdmin [email protected] 

    DocumentRoot /var/www/applicapple 
    ServerName applicapple.localhost 
    <Directory /var/www/applicapple/> 
      Options Indexes FollowSymLinks MultiViews 
      RewriteEngine On 
      AllowOverride 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 
</VirtualHost> 

submit.php肯定存在。 而来访applicapple.localhost /提交:

随着submit.php在目录中,我得到The requested URL /submit was not found on this server.

如果我删除submit.php,我得到The requested URL /submit.php was not found on this server.

如果我访问本地主机/ applicapple它按预期工作。

有人能告诉我这里发生了什么吗?

+0

如果您尝试使用sub.localhost/submit /而不是sub.localhost/submit,该怎么办? – 2012-12-17 14:25:25

+0

效果相同,输出没有区别): –

回答

0

的问题是在Apache是​​哪个搜索目录具有相同名称的文件MultiViews选项,因此/提交被解释为/submit.php存在/submit.php。我关掉了这个选项,它现在按预期工作。

0

看起来像你忽略“/”

试试这个

RewriteRule ^/submit/?$ submit.php [NC,L] 
+0

抱歉 - 没有效果差异): –

+0

您可以添加虚拟主机配置以及访问,错误和重写日志的尾部输出吗? – usetej2

+0

将其添加到问题;谢谢你的时间。 –

0

你RewritRule是

重写规则^ /提交/?$ submit.php [NC,L]

,我认为,因为它是行不通的,因为它意味着“比赛/提交到submit.php所以如果网址是www.xyz.com/submit它将被重定向为www.xyz。 comsubmit.php off-course这将导致'400错误的请求',因为你的Apache服务器不知道如何处理请求。

我测试了我的电脑上的配置,只需通过编辑重写规则重定向到/submit.php而不是仅仅submit.php就可以解决问题。

Options +FollowSymLinks 
RewriteEngine On 
RewriteRule ^/submit/?$ /submit.php