.htaccess 使用htaccess的php中的长URL

gcmastyq  于 2022-11-16  发布在  PHP
关注(0)|答案(2)|浏览(211)

我有一个很长的URL://domain/administration/registrar/term_detail.php?a_id=47我想让它看起来像://domain/administration/registrar/detail/47
我已经在//domain/administration/registrar/中创建了一个htaccess文件。下面是我在htaccess中的代码,它不工作。任何关于我做错了什么的建议都是感激的。
我的htaccessterm_detail.php文件都在registrar文件夹内。

RewriteEngine On
RewriteBase /administration/registrar/

RewriteCond %{REQUEST_METHOD} POST
RewriteRule ^ - [L]

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

RewriteRule ^administration/registrar/([a-zA-Z0-9]+)/?$ detail?a_id=$1 [L,QSA,NC]
oxcyiej7

oxcyiej71#

您可以在/administration/registrar/.htaccess中尝试以下规则:

RewriteEngine On
RewriteBase /administration/registrar/

## External redirect to /administration/registrar/term_detail/47
RewriteCond %{THE_REQUEST} /([^./]+)(?:\.php)?\?a_id=([^&\s]+)\s [NC]
RewriteRule ^ %1/%2? [R=301,L,NE]

## Internal rewrite to term_detail.php?a_id=47
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\w-]+)/([\w-]+)/?$ $1.php?a_id=$2 [QSA,L]
d4so4syb

d4so4syb2#

使用显示示例和尝试,请尝试以下.htaccess规则文件请确保在测试URL之前清除浏览器缓存
将您的htaccess文件保存在registrar文件夹中。

RewriteEngine ON
##External redirect to //domain/administration/registrar/detail/47 URL.
RewriteBase /administration/registrar/
RewriteCond %{THE_REQUEST} \s/([^/]*)/([^/]*)/(?:[^_]*)_([^.]*)\.php\?a_id=(\S+)\s [NC]
RewriteRule ^ /%1/%2/%3/%4? [R=301,L]

##Internal rewrite to term_detail.php file.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)/?$ $1/$2/term_$3.php?a_id=$4 [QSA,L]

相关问题