【问题标题】:How to use mod_rewrite to write SEO friendly url如何使用 mod_rewrite 编写 SEO 友好的 url
【发布时间】:2019-05-29 13:25:38
【问题描述】:

我已经在这里待了大约 4 个小时,但我不知道我做错了什么。

这是我的网址: http://localhost/mywebsite/public/jobs.php?seo_url=retail-store-manager-mr-nice-guy

我希望它是这样的: http://localhost/mywebsite/public/jobs/retail-store-manager-mr-nice-guy

这是我的 .htaccess mod_rewrite:

RewriteRule ^([a-zA-Z0-9_-]+)$ jobs.php?seo_url=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ jobs.php?seo_url=$1

非常感谢任何帮助!我已经验证我的 Apache 服务器启用/打开了 mod_rewrite。

【问题讨论】:

  • 您的正则表达式似乎在寻找 seo_url= 之后的部分,但您使用 ^ 将它们锚定到 URL 的开头,因此它们永远不会匹配.
  • 我不确定我是否关注....
  • 您所写的规则仅适用于localhost/retail-store-manager-mr-nice-guy等网址
  • 所以我将规则更改为以下内容: RewriteRule /mywebsite/public/([a-zA-Z0-9_-]+)$ jobs.php?seo_url=$1 RewriteRule /mywebsite /public/([a-zA-Z0-9_-]+)/$ jobs.php?seo_url=$1 还没有到达那里
  • 为什么没有在 URL 中包含 jobs 部分?

标签: apache .htaccess mod-rewrite


【解决方案1】:

这就是我使用我的网站的方式

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule ^mywebsite/public/jobs/(.+)/?$ /mywebsite/public/jobs.php?seo_url=$1 [NC,L]
</IfModule>

前段时间做过,但从这里学到了

http://httpd.apache.org/docs/current/mod/mod_rewrite.html

【讨论】:

  • 感谢您的建议。它仍然不适合我。我会看看你发送的链接。这是最令人沮丧的事情。
  • 是的,我也有类似的问题,以我想要的方式工作很痛苦。哪个部分不工作?你能回显 $_GET['seo_url'] 吗?
  • 是的,我可以回显 $_GET['seo-url']。所以现在,url 看起来像这样:localhost/mywebsite/public/… 我希望 url 看起来像这样:localhost/mywebsite/public/jobs/…。所以我基本上试图用斜杠“/”替换“.php?seo_url=”
  • 你得到了预期的结果吗?
  • 如果你是你的重写规则可能工作但你的 PHP 代码或 sql 查询可能有问题
猜你喜欢
  • 2015-02-14
  • 1970-01-01
  • 2010-12-03
  • 2012-08-14
  • 1970-01-01
  • 2011-06-11
  • 2023-03-24
  • 2023-03-12
  • 1970-01-01
相关资源
最近更新 更多