我一直在尝试创建一个301,从我的主页子文件夹中的一个页面重定向到同一子文件夹中的另一个页面。示例:
(1) samedomain.com/homepage//62-info to (2) samedomain.com/homepage/newinfopost
然而,它根本不起作用,而且我已经尝试了很多RewriteRule代码。
相关信息:
两个页面都是通过我的软件从数据库中提取出来的,subfolder
我尝试过的:
,
RewriteRule主页/讨论/62-info/(.*) https://samedomain.com/homepage/newinfopost/$1 L,R=301
RewriteRule主页/讨论/62-info/(.*)/主页/newinfopost/$1 L,R=301
RewriteRule /主页/讨论/62-info/$/主页/newinfopost/$1 L,R=301
RewriteRule ^/?主页/讨论/62-info/(.*)$ https://samedomain.com/homepage/newinfopost/$1 L,R=301
子文件夹中的.htaccess (由我的软件管理以将URL转换为友好URL)如下:
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteBase /homepage/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule \.(js|css|jpeg|jpg|gif|png|ico|map|webp)(\?|$) /homepage/404error.php [L,NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /homepage/index.php [L]
</IfModule>但是就像我说的,我也尝试过删除那个文件并禁用友好的URL。
编辑:
我相信我的网页是动态的。当它们不是友好的URL时,它们看起来如下:
https://samedomain.com/homepage/index.php?app=discussions&id=62
基于@MrWhite回答的测试1:
RewriteRule ^discussions/62-info$ /homepage/newinfopost [R=302,L]
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteBase /homepage/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule \.(js|css|jpeg|jpg|gif|png|ico|map|webp)(\?|$) /homepage/404error.php [L,NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /homepage/index.php [L]
</IfModule>发布于 2022-06-20 23:58:40
要将/homepage/discussions/62-info重定向到/homepage/newinfopost,您应该将以下内容添加到/homepage/.htaccess文件的顶部:
RewriteRule ^discussions/62-info$ /homepage/newinfopost [R=302,L]RewriteRule模式(第一个参数)匹配相对于包含.htaccess文件的目录的URL路径。因此,在homepage/文件中不应该包含/homepage/.htaccess。
注意,在.htaccess中,匹配的URL路径不以斜杠开头。
当/homepage/.htaccess文件存在时(包含mod_rewrite指令),那么父配置中的任何mod_rewrite指令(即。(在/.htaccess中)是完全覆盖的--它们甚至没有被处理(默认情况下)。
始终使用302 (临时)重定向先进行测试,以避免潜在的缓存问题。在测试之前,您应该清除浏览器缓存。
RewriteRule homepage/discussions/62-info/(.*) https://samedomain.com/homepage/newinfopost/$1 [L,R=301]
RewriteRule homepage/discussions/62-info/(.*) /homepage/newinfopost/$1 [L,R=301]
RewriteRule /homepage/discussions/62-info/$ /homepage/newinfopost/$1 [L,R=301]
RewriteRule ^/?homepage/discussions/62-info/(.*)$ https://samedomain.com/homepage/newinfopost/$1 [L,R=301]所有这些都不会与示例URL相匹配,因为该示例不包括尾随斜杠。第三条规则还有一个错误的斜杠前缀。(但是为什么您有一个捕获子模式和$1反向引用?在您的示例URL中似乎没有什么需要“捕获”的吗?)
它还将取决于使用这些指令的位置(和文件)。
撇开:
RewriteBase /home/
在发布的指令中,没有使用RewriteBase指令。但是,它的设置似乎不正确,因为基本URL似乎是/homepage,而不是/home。
https://stackoverflow.com/questions/72689964
复制相似问题