社区,
我有以下问题:对于私有项目,我想用mod_rewrite创建好的URL。
本地(Win 10,Apache 2.4.23)我的.htaccess中的每个规则都可以正常工作。 远程(Ubuntu 16.04,Apache 2.4.18)前3条规则根本不起作用,特别是全部返回404未找到错误。
请看一下:
# Basic site rules
RewriteRule ^login$ /login.php
RewriteRule ^logout$ /login.php?logout
RewriteRule ^signup$ /signup.php
RewriteRule ^confirm/(.*)$ /signup.php?confirm®key=$1
# mail list
RewriteRule ^mails$ /manage_mail.php
RewriteRule ^mail/list/ip$ /manage_mail.php?mode=create_iplist
RewriteRule ^mail/list/usernames$ /manage_mail.php?mode=create_usernamelist
and more rules here...
规则1-3(登录,注销,注册)返回上述404错误。 以下每条规则都按预期工作。
有什么想法吗? 提前谢谢。
编辑#1:划伤
编辑#2:这是我正在使用的VHost:
<VirtualHost *:80>
ServerName domain.me
ServerAdmin postmaster@domain.me
DocumentRoot /var/www/domain.me/html
<Directory /var/www/domain.me/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
ErrorLog "|/usr/bin/cronolog /var/www/domain.me/log/%Y-%m/error_%Y-%m-%d.log"
CustomLog "|/usr/bin/cronolog /var/www/domain.me/log/%Y-%m/access_%Y-%m-%d.log" combined
</VirtualHost>
我的/etc/apache2/apache2.conf看起来很相似。
答案 0 :(得分:1)
感谢您的帮助,我自己找到了解决方案。问题是
中的MultiViews选项<Directory /var/www/domain.me/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
删除它并重新加载配置后,一切正常。
答案 1 :(得分:0)
有时在apache的配置中userSvc.getAuthenticatedUser(function() {}, function() {});
选项未设置为AllowOverride
时会出现此问题。
我不知道您在哪里设置了配置,但我认为您已将其设置为All
或/etc/apache2/apache2.conf
。
在该文件中,您必须转到/etc/apache2/httpd.conf
标记,其中设置了<Directory "LOCATION">
[1]文件夹的位置,并添加了public_html
参数。
或者,如果找不到该目录,只需在最后添加AllowOverride All
文件夹的新<Directory>
标记。
它应该是这样的:
public_html
[1]我假设这是你拥有php文件的文件夹的名称。