2
我正在从PHP 5.3.3/Apache 2.2迁移到PHP 5.6.13/Apache 2.4,并且正在努力应对重写规则。Apache 2.4 mod_rewrite和htaccess
在我的子目录中我有一个htaccess文件,但其中的重写规则不适用。
Options +SymLinksIfOwnerMatch
RewriteEngine on
Rewritebase /dir/module/
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
RewriteRule ^edit/([0-9]+) /dir/module/edit.php?id=$1 [L]
我打开改写记录并在此我可以看到它看起来好像试图重写将会edit.php/186591,而不是edit.php?ID = 186591的条目,但我不知道如果这是正常的:
[Wed Oct 21 00:34:52.207212 2015] [rewrite:trace3] [pid 19507] mod_rewrite.c(468):
[client 192.168.1.1:43597] 1.2.3.4 - - [www.domain.com/sid#7f057ae2d120
[rid#7f057b094380/subreq] [perdir /home/domain/public_html/dir/module/]
applying pattern '^edit/([0-9]+)' to uri 'edit.php/186591'
我在哪里出错了?
'选项+ SymLinksIfOwnerMatch -MultiViews' – hjpotter92
嗨 - 我已经尝试过,却得到了一个500错误“选项不是多视图这里不允许”中的error_log – bhttoan
在服务器的配置文件,把'的AllowOverride选项=所有,MultiViews';重新启动服务器并测试。也;在一般性重写'RewriteRule ^(。*)$ $ 1.php'上面放置更具体的'^ edit /([0-9] +)' – hjpotter92