【问题标题】:RewriteRule on PHP files and parameters [closed]PHP文件和参数的RewriteRule [关闭]
【发布时间】:2013-01-18 04:28:00
【问题描述】:

我正在创建一个网站,我希望它对 SEO 友好。 我将页面扩展为.php,我想将其隐藏在 url 中。 我还有另外两个页面名称 abc.phpxyz.php 根据 ulr 参数提供输出。

所以我想要这样的东西:

mydomain.com/pagename.php 显示为mydomain.com/pagename

mydomain.com/abc.php?id=name 显示为mydomain.com/abc/name

mydomain.com/xyz.php?id=name 显示为mydomain.com/xyz/name

请帮我在.htaccessRewriteRule

【问题讨论】:

标签: php .htaccess mod-rewrite


【解决方案1】:

你有两个选择:

选项 1:使用 MultiViews - 即使扩展名被省略,apache 也会将请求传递给您的 php 文件 - 然后在 php 中处理其余部分(解析 $_SERVER["REQUEST_URI"])。

选项 2:禁用 MultiViews 并使用 URL 重写:

Options -MultiViews
RewriteEngine On
RewriteRule ^(pagename|abc|xyz)/?$ $1.php [L,QSA]
RewriteRule ^(pagename|abc|xyz)/([^/]+) $1.php?id=$2 [L,QSA]

【讨论】:

  • 感谢您的回复,我尝试了您提供的解决方案,RewriteRule ^(pagename|abc|xyz)/?$ $1.php [L,QSA] 这部分对我有用,但 RewriteRule ^ (pagename|abc|xyz)/([^/]+) $1.php?id=$2 [L,QSA] 部分现在正在工作。我希望它作为 mydomain.com/abc.php?id=name 显示为 mydomain.com/abc/name 和 mydomain.com/xyz.php?id=name 显示为 mydomain.com/xyz/当我尝试它时给出“找不到错误页面”的名称
  • 这只会将mydomain.com/abc/name 转换为mydomain.com/abc.php?id=name,而不是相反。如果您希望链接在生成的 html 中看起来不错,您的 php 代码应该生成不同的链接。
  • +1 @poncha 这是一个有效的答案。将资源 URL 重定向到返回相同资源 URL 的“漂亮”URL 是错误的方法。
  • 谢谢您,我们可以写multiple mod_rewrite rules 以便按我的意愿工作吗?我尝试的解决方案仅适用于我可以将 mydomain.com/abc/name 放入 mydomain.com/abc.php?id=name 的页面。但如果我希望其他页面应该类似,我将 mydomain.com/xyz.php?id=name 显示为 mydomain.com/xyz/name 不是正常工作。
  • @Balaji 正如我之前所说,如果您想更改 HTML 的工作方式,则需要更改创建它的 php。此重写代码将单向翻译(从“美化” url 到参数),另一种应由 php 完成。
猜你喜欢
  • 1970-01-01
  • 2013-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-20
  • 2012-01-10
  • 2015-02-14
相关资源
最近更新 更多