首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache .htacess - 301重定向根本无法工作。使用动态友好的URL

Apache .htacess - 301重定向根本无法工作。使用动态友好的URL
EN

Stack Overflow用户
提问于 2022-06-20 16:09:22
回答 1查看 39关注 0票数 0

我一直在尝试创建一个301,从我的主页子文件夹中的一个页面重定向到同一子文件夹中的另一个页面。示例:

(1) samedomain.com/homepage//62-info to (2) samedomain.com/homepage/newinfopost

然而,它根本不起作用,而且我已经尝试了很多RewriteRule代码。

相关信息:

两个页面都是通过我的软件从数据库中提取出来的,subfolder

  • Both主页中的页面都是友好的URL。我的软件在主页中安装了另一个.htaccess文件,以使.htaccess在上。

我尝试过的:

  • I尝试暂时禁用友好URL并从子文件夹中删除.htaccess,只留下主.htaccess active
  • .htaccess文件(从主文件夹)工作。我用不同的规则测试了它,很好,

  • ,一些我尝试过的RewriteRules:

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)如下:

代码语言:javascript
复制
<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:

代码语言:javascript
复制
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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-20 23:58:40

要将/homepage/discussions/62-info重定向到/homepage/newinfopost,您应该将以下内容添加到/homepage/.htaccess文件的顶部:

代码语言:javascript
复制
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 (临时)重定向先进行测试,以避免潜在的缓存问题。在测试之前,您应该清除浏览器缓存。

代码语言:javascript
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72689964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档