繁体   English   中英

如何在 htaccess 中重写 url

[英]How rewrite url in htaccess

早上好,

我的网站结构中有文档,可以使用以下 url 格式访问:

http://example.com/docs/files/123/mydoc.pdf

http://example.com/docs/files/475/otherdoc.pdf

我想在访问上述类型的 url 时,将其重命名为以下格式:

http://example.com/123/mydoc

http://example.com/475/otherdoc

我在 htaccess 中有以下规则

<IfModule mod_rewrite.c>
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
RewriteRule ^/docs/files/([0-9]+)/([a-zA-Z0-9-]+)\.([a-zA-Z-]+) /$1/$2 [QSA,L]
</IfModule>

如果我在浏览器中输入

http://example.com/docs/files/123/mydoc.pdf

它不会将 url 更改为

http://example.com/123/mydoc

我究竟做错了什么?

谢谢

使用您显示的示例,您能否尝试以下操作。 请确保在测试 URL 之前清除浏览器缓存。

RewriteEngine ON
RewriteCond %{THE_REQUEST} \s(/files/.*)\.pdf\s [NC]
RewriteRule ^ http://%{HTTP_HOST}%1 [R=301,NE]
RewriteRule ^(.*)/?$ files/$1.pdf [L]

您可以在您的站点根目录 .htaccess 中尝试这些规则:

RewriteEngine On

RewriteCond %{THE_REQUEST} \s/+files/(\S+)\.pdf[?\s] [NC]
RewriteRule ^ /%1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/files/$1.pdf -f
RewriteRule ^(.+?)/?$ files/$1.pdf [L]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM