我正在使用ubuntu LAMP而我正在尝试使用mod_rewrite转换网址,例如:
我已经使用了这个重写规则:
RewriteRule ^([a-zA-Z0-9]+)$ ./$1.php
RewriteRule ^([a-zA-Z0-9]+)-([a-zA-Z0-9]+)$ ./$1.php?sub1=$2
在我的OSX上本地工作他们工作正常,无论如何当在ubuntu服务器上传.htaccess时,调用site / test我无法访问site / test.php但是我得到了404。 Mod_rewrite正在工作,实际上404页面设置在同一个.htaccess中并且有效。 在本地我在一个文件夹中使用它:localhost / myfolder / ....而在远程我使用子域的根: app.sitename.com /....
有人可以帮助我吗?
这是完整的代码:
RewriteEngine On
RewriteRule ^altro&(.+)? ./altro.php?$1 [L,QSA,NC]
RewriteRule ^([a-zA-Z0-9]+)$ ./$1.php [L,QSA,NC]
RewriteRule ^([a-zA-Z0-9]+)-([a-zA-Z0-9]+)$ ./$1.php?sub1=$2
RewriteRule ^([a-zA-Z0-9]+)-([a-zA-Z0-9]+)-([a-zA-Z0-9]+)$ ./$1.php?sub1=$2&sub2=$3
RewriteRule ^([a-zA-Z0-9]+)-([a-zA-Z0-9]+)-([a-zA-Z0-9]+)-([a-zA-Z0-9]+)$ ./$1.php?sub1=$2&sub2=$3&sub3=$4
RewriteRule ^([a-z]+)-([a-z]+)-([0-9]+)-([a-zA-Z0-9_]+).([a-zA-Z]+)$ ./server/php/files/$1/$2/$3/$4.$5
第一个指令正在运作!事实上,site / altro&代码打开了altro.php?代码
答案 0 :(得分:1)
这可能有助于调试:
RewriteLog "/var/log/apache2/rewrite.log"
RewriteLogLevel 3
来源:How to debug Apache mod_rewrite
(你不能把它放在.htaccess中。你必须把它放在VirtualHost配置中。)
答案 1 :(得分:0)
你可以尝试这段代码:
RewriteEngine On
RewriteRule ^([a-zA-Z0-9]+)/?$ $1.php [L,QSA]
RewriteRule ^([a-zA-Z0-9]+)-([a-zA-Z0-9]+)/?$ $1.php?sub1=$2 [L,QSA]
完整.htaccess代码:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteRule ^altro&(.+) altro.php?$1 [L,QSA,NC]
RewriteRule ^([a-zA-Z0-9]+)$ $1.php [L]
RewriteRule ^([a-zA-Z0-9]+)-([a-zA-Z0-9]+)$ $1.php?sub1=$2 [L,QSA]
RewriteRule ^([a-zA-Z0-9]+)-([a-zA-Z0-9]+)-([a-zA-Z0-9]+)$ $1.php?sub1=$2&sub2=$3 [L,QSA]
RewriteRule ^([a-zA-Z0-9]+)-([a-zA-Z0-9]+)-([a-zA-Z0-9]+)-([a-zA-Z0-9]+)$ $1.php?sub1=$2&sub2=$3&sub3=$4 [L,QSA]
RewriteRule ^([a-z]+)-([a-z]+)-([0-9]+)-([a-zA-Z0-9_]+).([a-zA-Z]+)$ server/php/files/$1/$2/$3/$4.$5 [L,QSA]