【发布时间】: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