我可以使用PHP和/或htaccess重写URL而不是重定向吗?

时间:2011-05-12 14:15:45

标签: php .htaccess rewrite

有没有办法可以使用PHP(和/或.htaccess)来重写页面的URL。

例如,如果用户访问www.mysite.com/french,他们实际上是访问www.mysite.com/index.php?lang=fr

页面

但不是重定向。

3 个答案:

答案 0 :(得分:3)

您希望使用mod_rewrite和.htaccess文件来实现此目的。

RewriteEngine On
RewriteBase /
RewriteRule ^french/(.*)$ /index.php?lang=fr [L,QSA]

答案 1 :(得分:1)

是的,在.htaccess文件中使用Apache mod_rewrite和适当的规则。

mod_rewrite上的文档位于:http://httpd.apache.org/docs/current/mod/mod_rewrite.html

答案 2 :(得分:0)

在Apache站点上你可以找到几个examples of URL rewriting flavors,就像在.htaccess文件中使用这样的东西一样:

RewriteEngine on
RewriteRule ^french(/|)$ /index.php?lang=fr  [flag]

[flag]可以是以下之一:

[PT]
[L,PT]
[QSA]
[L,QSA]

您可能需要查看PT (passthrough) flag docsRewriteRule flags docs

另外,请注意链接指向的内容:实际上,RewriteRule第一个参数是一个正则表达式,用于匹配要重写的URL。目前,

^french(/|)$

在域名之后匹配“french”,后跟斜杠(/)或没有(这是(/|)的含义);也就是说,它将匹配www.mysite.com/french和www.mysite.com/french/,但没有别的。如果需要解析查询字符串参数或子路径,则可能需要更复杂的正则表达式。