使用 .htaccess 进行多个重定向

发布于 2024-10-23 13:48:04 字数 890 浏览 1 评论 0原文

我想做这个

website.com/blog/index.php -> website.com/blog

website.com/admin/archief_login.php -> website.com/admin

这适用于我的代码。 但我想添加以下内容:

website.com/aa -> website.com/web/index.php?init=aa

由于某种原因,博客获得此重定向:website.com/blog/?init=blog

设置这些不同重写的最佳方法是什么?

选项所有索引上的 RewriteEngine 重写条件%{HTTP_HOST} ^websit.com$ [或] RewriteCond %{HTTP_HOST} ^www.website.com$ 重写规则^admin$ “http\:\/\/www.website.com\/admin/archief_login.php” [R=301,L]

重写规则^博客$ “http\:\/\/www.website.com\/blog/index.php” [R=301,L]

目录索引client_login.php

重写规则 ^屏幕-([a-zA-Z0-9_-]+).html$ index_client.php?screen=$1

重写规则 ^发票([a-zA-Z0-9_-]+).html$ make_invoice.php?id=$1

重写规则 ^pack-([a-zA-Z0-9_-]+).html$ index_client.php?screen=pack_code&wwwcode=$1

I want to do this

website.com/blog/index.php -> website.com/blog

website.com/admin/archief_login.php -> website.com/admin

this works with my code.
but I want to add this:

website.com/aa -> website.com/web/index.php?init=aa

for some reason the blog gets this redirect: website.com/blog/?init=blog

what is the best way to set these different rewrites?

RewriteEngine on Options All -Indexes
RewriteCond %{HTTP_HOST}
^websit.com$ [OR] RewriteCond
%{HTTP_HOST} ^www.website.com$
RewriteRule ^admin$
"http\:\/\/www.website.com\/admin/archief_login.php"
[R=301,L]

RewriteRule ^blog$
"http\:\/\/www.website.com\/blog/index.php"
[R=301,L]

DirectoryIndex client_login.php

RewriteRule
^screen-([a-zA-Z0-9_-]+).html$
index_client.php?screen=$1

RewriteRule
^invoice([a-zA-Z0-9_-]+).html$
make_invoice.php?id=$1

RewriteRule
^pack-([a-zA-Z0-9_-]+).html$
index_client.php?screen=pack_code&wwwcode=$1

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

等待我真够勒 2024-10-30 13:48:04

您需要将更“通用”的规则放在文件的较低位置,这样它们就不会匹配几乎所有的 URL

RewriteRule ^(\w)$ /web/index.php?init=$1 [L, NC]
RewriteRule ^blog$ /blog/index.php [R=301,L]

上面的内容就可以了

website.com/aa => website.com/web/index.php?init=aa
website.com/blog => website.com/web/index.php?init=blog

如果您颠倒这两个规则,您将得到

website.com/aa => website.com/web/index.php?init=aa
website.com/blog => website.com/blog/index.php

You need to put the more "general" rules lower in the file so they don't match almost all of your URLs

RewriteRule ^(\w)$ /web/index.php?init=$1 [L, NC]
RewriteRule ^blog$ /blog/index.php [R=301,L]

The above will do

website.com/aa => website.com/web/index.php?init=aa
website.com/blog => website.com/web/index.php?init=blog

If you reverse the two rules you will get

website.com/aa => website.com/web/index.php?init=aa
website.com/blog => website.com/blog/index.php
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文