【问题标题】:Rewrite URL in PHP with mod_rewrite用 mod_rewrite 在 PHP 中重写 URL
【发布时间】:2012-10-11 19:57:20
【问题描述】:

Web 服务器是 Apache。我想重写 URL,这样用户就不会知道实际的目录。例如: 原网址:

http://www.example.com/en/piecework/piecework.php?piecework_id=11

预期网址:

http://piecework.example.com/en/11

如何用mod_rewrite实现?

【问题讨论】:

  • 与PHP无关。您想要的功能都是使用 .htaccess 文件。 PHP 在重定向之前不会处理任何事情。我会帮忙,但我没有鼠标(使用这个垃圾触摸板)并且要睡觉。
  • 感谢您的编辑。

标签: apache .htaccess mod-rewrite url-rewriting


【解决方案1】:

你需要定义一个重写规则(应该和这个类似):

RewriteRule ^/(.*)/en/piecework/(.*)piecework_id=([0-9]+)(.*) piecework.mydomainname.com/en/$3

并将其放在您网站主文件夹下的 .htaccess 文件中

重写规则的完整描述在这里:http://httpd.apache.org/docs/2.0/misc/rewriteguide.html

编辑

在我的规则中犯了一个错误,希望我能纠正它。

【讨论】:

  • /en/piecework/piecework.php?soemthing=10&piecework_id=11&somethingelse=12怎么样
  • 感谢您指出错误。 @Steven $2 表示您从使用此规则解析字符串中获得的第二组正则表达式,即:第二个 (.*) 实际上您需要的是 ([0-9]+) ,这是第三组由 $3 引用
  • 我已经指定了规则(RewriteRule ^/(.*)/en/piecework/(.*)piecework_id=([0-9]+)(.*)piecework.mydomainname.com/ en/$3) 在 .htaccess(在我的站点根目录中),但是当我访问 piecework.mydomainname.com/en/11 时,我得到“找不到对象”。怎么了?
  • 您是否在 Apache 配置文件中启用了 .htaccess 文件?
【解决方案2】:

我在这里找到了一个写得很好的速成课程:
http://articles.sitepoint.com/article/guide-url-rewriting

您需要在 .htaccess 中指定规则(在您的站点根目录中)。

【讨论】:

  • 我已经指定了规则(RewriteRule ^/(.*)/en/piecework/(.*)piecework_id=([0-9]+)(.*)piecework.mydomainname.com/ en/$3) 在 .htaccess(在我的站点根目录中),但是当我访问 piecework.mydomainname.com/en/11 时,我得到“找不到对象”。
【解决方案3】:

我建议以下规则:

RewriteCond %{HTTP_HOST} ^(?!www)([^.]+)\.mydomainname\.com$ [NC]
RewriteRule ^(w+)/(\d+)$ /$1/%1/%1.php?%1_id=$2 [L]

【讨论】:

  • 我已经指定了规则(RewriteCond %{HTTP_HOST} ^(?!www)([^.]+)\.mydomainname\.com$ [NC] RewriteRule ^(w+)/(\ d+)$ /$1/%1/%1.php?%1_id=$2 [L] ) 在 .htaccess(在我的站点根目录中),但是当我访问 piecework.mydomainname.com/en/11 时,我得到“对象找不到”。怎么了?
  • 对不起,我打错了。试试这样: RewriteCond %{HTTP_HOST} ^(?!www)([^.]+)\.mydomainname\.com$ [NC] RewriteRule ^(\w+)/(\d+)$ /$1/%1 /%1.php?%1_id=$2 [L]
猜你喜欢
  • 1970-01-01
  • 2015-12-31
  • 1970-01-01
  • 2012-07-22
  • 1970-01-01
  • 2010-12-15
  • 1970-01-01
  • 2011-11-10
  • 1970-01-01
相关资源
最近更新 更多