gpt4 book ai didi

.htaccess - 使用相对重写URL从文件夹内进行301重写

转载 作者:行者123 更新时间:2023-12-02 04:13:13 26 4
gpt4 key购买 nike

我有以下问题。我们在同一页面上使用了许多不同的URL。现在,我们只想为那些页面使用一个URL。这里是一个例子:

RewriteRule ^(subfolder1/folder1/|(subfolder2|subfolder3)/folder2/|folder3/)?(name1|name2|name3|name4)$ scriptname.php [QSA,NC]

如您所见,它非常混乱。我现在想要做的是:使用301将所有URL仅重写为那些URL中的一个(例如subfolder1 / folder1 / name1),而不是对该URL进行重写以解决实际的脚本。它可能看起来像这样:
RewriteRule ^((subfolder2|subfolder3)/folder2/|folder3/)?(name2|name3|name4)$ /subfolder1/folder1/name1 [R=301,QSA,NC]
RewriteRule ^subfolder1/folder1/name1$ script.php [QSA.NC]

直到这里我都没问题。但是现在是棘手的部分。我们在UNIX和Windows计算机上使用了几台开发计算机。它们都有不同的主机名和文件夹。这里有些例子:
http://www.example.com (production)
http://test.example.com (testing)
http://localhost/development_folder/ (development WIN)
http://localhost:8888/development_folder/ (development MAC)

问题是,由于开发机器上有子文件夹,因此我不能像那样使用绝对URL作为 /subfolder1/folder1/name1/。指向 http://localhost/subfolder1/folder1/name1/而不是 http://localhost/development_folder/subfolder1/folder1/name1/,因此所有重写将在开发计算机上中断。

有机会解决此问题吗?由于所有开发机上的 development_folder文件夹都是相同的,因此像这样在以后的重写中排除/包含该文件夹是否会有所帮助:
RewriteRule ^((subfolder2|subfolder3)/folder2/|folder3/)?(name2|name3|name4)$ /development_folder/subfolder1/folder1/name1 [R=301,QSA,NC]
RewriteRule ^development_folder/(.*)$ $1 [QSA.NC]
RewriteRule ^subfolder1/folder1/name1$ script.php [QSA.NC]

还是有更好的方法呢?任何提示都会有很大帮助。

最佳答案

我将使用Apache Include指令来修改规则集。这样,我可以测试将在生产中使用的规则。

我不记得解决include通配符不包含任何文件是否存在问题,但是如果存在,则可以在生产环境中使用一个空文件,而实际的dev重写规则将在dev中使用。

RewriteRule ^((subfolder2|subfolder3)/folder2/|folder3/)?(name2|name3|name4)$ /subfolder1/folder1/name1 [R=301,QSA,NC]
Include /etc/apache/conf.d/*_dev.rewrites
RewriteRule ^subfolder1/folder1/name1$ script.php [QSA.NC]

在您的开发机上,只有开发机上的/etc/apache/conf.d/my_dev.rewrites:
RewriteRule ^development_folder/(.*)$ $1 [QSA.NC]

关于.htaccess - 使用相对重写URL从文件夹内进行301重写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4025759/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com