【问题标题】:htaccess rewrite rule /en/support/my-tickets/ to my-tickets.php pagehtaccess 重写规则 /en/support/my-tickets/ 到 my-tickets.php 页面
【发布时间】:2020-10-22 04:10:28
【问题描述】:

我正在尝试在 htaccess 中为 seo 友好链接编写规则,但我遇到了问题。

我所有的页面都位于同一个根文件夹中

  • css/(文件夹)
  • js/(文件夹)
  • includes/(包含词汇表和 config.php 文件的文件夹)
  • index.php
  • support.php
  • new-ticket.php
  • all-tickets.php
  • my-profile.php

由 .com/language/page 构建的链接 - 工作正常!
例如。 /en/ (它是 index.php?lang=en)
例如。 /fr/my-profile/ (它是 (my-profile.php?lang=fr)
例如。 /zh/支持/

我想做的是:
/zh/support/new-ticket/
/zh/support/all-tickets/

而且我不知道如何使它正确。它每次都将我重定向到 support.php 页面。 .ht访问代码:

ErrorDocument 404 /404
Options +MultiViews
RewriteEngine On

RewriteCond %{THE_REQUEST} \s/+([^.]+\.php)\?lang=([^\s&]+) [NC]
RewriteRule ^ /%2/%1? [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([A-Z]{2})/(.+?)/?$ /$2?lang=$1 [L,QSA,NC]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([A-Z]{2})/?$ /?lang=$1 [L,QSA,NC]


RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([A-Z]{2})/^support$/?$ /$3?lang=$1 [L,QSA,NC]


【问题讨论】:

  • /en/support/new-ticket/ 的内部重写 URI 是什么。只是/support.php?lang=en 离开了new-ticket 吗?
  • 对于内部它将是 /new-ticket.php?lang=en。但我需要在链接栏中将其显示为 /en/support/new-ticket

标签: php regex .htaccess mod-rewrite url-rewriting


【解决方案1】:

您的最后一条规则似乎不正确。将其更改为:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([A-Z]{2})/support/([\w-]+)/?$ $2.php?lang=$1 [L,QSA,NC]

【讨论】:

  • 谢谢先生!我以为它不会起作用,但是我把这条规则放在其他规则之上之后它就起作用了!
  • 是的,我忘了提醒您有关此规则的位置。它应该放在R=301 规则的正下方。
猜你喜欢
  • 2016-06-27
  • 2012-08-12
  • 2021-02-09
  • 2023-03-31
  • 1970-01-01
  • 2011-12-27
  • 2020-01-10
  • 2014-10-30
相关资源
最近更新 更多