我想改变:
进入
http:// example.com/en/blog.html
或只是
http:// example.com/blog.html
答案 0 :(得分:2)
我认为你正试图获得更友好的网址,所以我假设要在内部重写http://example.com/en/blog.html
到http://example.com/index.php?p=blog&pid=2&lid=1&l=en
。
我可以推荐的最实用的方法是将所有内容重写为PHP脚本,并在PHP内部进行重写。这样,您的PHP应用程序就可以完全控制URI。
RewriteEngine On
RewriteBase /
RewriteRule .* index.php [L]
在PHP中,您可以通过superglobals访问原始URI:$_SERVER[ "REQUEST_URI" ]
。注意:消毒,消毒,消毒!
<强> 修改 强>
如果您想通过.htaccess
完成整个事情,请参阅下面的示例。但请注意,如果将来扩展URI结构(即添加新规则),那么这种方法可能会变得更难以维护,而不是在PHP应用程序中进行。
RewriteEngine On
RewriteBase /
# http://example.com/en/blog.html
RewriteRule ^([^\/]*)/([^\/]*)\.html$ index.php?l=$1&p=$2 [NC,QSA,L]
# http://example.com/blog.html
RewriteRule ^([^\/]*)\.html$ index.php?p=$1 [NC,QSA,L]
# alternatively you can change the last line to add a default language (if not present)
RewriteRule ^([^\/]*)\.html$ index.php?l=sk&p=$1 [NC,QSA,L]
编辑#2: 在所有三条规则中添加了一个丢失的^
字符,即将([\/]*)
更改为([^\/]*)