.htaccess htaccess重写规则页面为';不能正确地重定向

.htaccess htaccess重写规则页面为';不能正确地重定向,.htaccess,mod-rewrite,redirect,.htaccess,Mod Rewrite,Redirect,这是我第一次尝试编写htaccess规则。我的目标是使所有相对链接重定向到绝对链接。首先,我在测试: RewriteEngine On RewriteRule gallery\.php$ http://www.domain.com/sample/gallery.php RewriteRule info\.php$ http://www.domain.com/sample/gallery.php 第一条规则让Firefox在我点击链接时抛出错误“页面没有正确重定向”,而第二条规则则可以正常工作

这是我第一次尝试编写htaccess规则。我的目标是使所有相对链接重定向到绝对链接。首先,我在测试:

RewriteEngine On

RewriteRule gallery\.php$ http://www.domain.com/sample/gallery.php
RewriteRule info\.php$ http://www.domain.com/sample/gallery.php
第一条规则让Firefox在我点击链接时抛出错误“页面没有正确重定向”,而第二条规则则可以正常工作。未来的想法是写一条规则,比如

RewriteRule catchAllRelativeLinks$ http: //www.domain.com/sample/$1
但是如果我不能使第一条规则起作用,我想我不会找到如何制定真正的规则

编辑: 为了避免无休止的循环,难道我不能通过捕捉一个变量来尝试理解我是在第一个距离上还是在第二个距离上吗?我尝试过(但失败了)的一些想法:

或者使用环境变量


再次感谢

你掌握的第一条规则会导致无休止的循环
mod_rewrite
在绝对化相对链接方面并不那么出色。这应该在HTML中完成。例如,转弯

<a href="gallery.php">Gallery</a>

进入



然而,第二条规则之所以有效,是因为它做了一些
mod_rewrite
做得非常好的事情,即从一个页面或URL重定向到另一个页面或URL。有关这方面的更多信息,请参阅。

您可以查看此链接以获取详细说明

这对我有用(:

重新启动发动机 #检查提交后的情况| #因为POST参数不会保留在重定向上。 #如果要确保所有提交的帖子都是安全的,可以省略该行 #(任何未担保的后期提交将被忽略) 重写cond%{REQUEST_METHOD}!^POST$ #强制HTTPS RewriteCond%{HTTPS}!=在[或]上 重写cond%{SERVER_PORT}80 #要应用的页面 重写cond%{REQUEST_URI}^安全的东西[或] 重写cond%{REQUEST\u URI}^其他安全的东西 重写规则。*https://%{SERVER_NAME}%{REQUEST_URI}[R=301,L]
第一个要匹配的是什么?是否意味着要将
/gallery.php
重定向到
/sample/gallery.php
?如果是这样,它应该包括
^
,如
^gallery\.php$
中所述。您可以查看此解释和指南(:为了避免无休止的循环,我不能捕获IS SUBREQ或抛出并捕获参数吗?什么?我编辑了这个问题。是的,似乎只能重定向一次。
<a href="gallery.php">Gallery</a>
<a href="/sample/gallery.php">Gallery</a>
RewriteEngine on # Check for POST Submission | # Because POST parameters aren't retained on a redirect. # You can omit that line if you want to make sure that all POST submissions are secure # (any unsecured POST submissions will be ignored) RewriteCond %{REQUEST_METHOD} !^POST$ # Forcing HTTPS RewriteCond %{HTTPS} !=on [OR] RewriteCond %{SERVER_PORT} 80 # Pages to Apply RewriteCond %{REQUEST_URI} ^something_secure [OR] RewriteCond %{REQUEST_URI} ^something_else_secure RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]