我正在使用 ubuntu LAMP,我正在尝试使用 mod_rewrite 来转换 url,例如:
- 站点/XXX 到站点/XXX.php 和
- 站点/XXX-YYY 到站点/XXX.php?sub1=YYY
我使用了这个重写规则:
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&code 打开 altro.php?code