1

我需要你的帮助!(对不起,我的英语不好)

我尝试在 Ubuntu13.10/Apache2.4.6 上的本地主机中进行 url 重写......我在互联网上搜索了很多时间,问题总是在这里..

这是我的 .htaccess (我从 url 重写开始,所以我不知道是否可以):

RewriteEngine On
AllowFromAll All
RewriteRule home/   index.php?uc=home

当我去127.0.0.1/mywebsite/home/我有一个404错误。

  • 我的 .htaccess 位于:mywebsite/.htaccess
  • 我用“sudo a2enmod rewrite”激活了 url 重写并重新启动了 apache。
  • 我在 apache 日志中没有错误
  • 我读了解决方案,他说我必须在 /etc/apache2/sites-available/default 中将 AllowOverride 更改为 On 但我没有 /etc/apache2/sites-available/default 文件
  • 我搞不清楚了...

拜托,我不知道该怎么办...

经过多次测试:我认为我有 AllowOverride 的问题

4

3 回答 3

0

所以......如果这不起作用,让我们从头开始。

找到 httpd.conf

LoadModule rewrite_module libexec/mod_rewrite.so并且AddModule mod_rewrite.c应该在那里,并且没有注释标记 (#)

在您的 .htaccess 中,有:

# The server must follow symbolic links (this can help in some apache versions)
Options +FollowSymlinks

# RewriteEngine activation
RewriteEngine on

# RewriteRule
RewriteRule ^home$   index.php?uc=home [L]

此配置适用于我的 apache 2.2.22。

事实是

/index.php?uc=home [L]

点在http://127.0.0.1/index.php

代替http://127.0.0.1/mywebsite/index.php

因为DocumentRoot财产。在一个真实的域上,或者 /wa virtualhost 指向 /mywebsite/,/index.php?uc=home [L]应该可以工作。

请记住,RewriteRule 是相对的DocumentRootRewriteBase不能解决这个问题。

于 2013-11-14T00:04:19.927 回答
0

我认为这更像是这样:

RewriteRule 与 RewriteBase 相关,因此如果您的 .htacess 在 /mywebsite/ 文件夹中:

RewriteBase /
RewriteRule /home   index.php?uc=home [L]

这样它应该可以工作,让我知道;)

于 2013-11-13T22:34:30.127 回答
0

您要么需要指定RewriteBase

RewriteBase /mywebsite/
RewriteRule home   index.php?uc=home [L]

或将其添加到您的规则中

RewriteRule /mywebsite/home   index.php?uc=home [L]
于 2013-11-13T22:09:27.433 回答