将静态 url 重定向到动态
Redirect static url to dynamic
我正在尝试将现有流量重定向到一个重写的站点,该站点现在在 Apache 服务器上使用带有 RewriteRule
的动态 URL,例如
重定向 whatever.com/directory/some_page
到 whatever.com/directory/?m=some_page
每个重写 URL 的示例都显示了相反的方式(动态到静态),因此工作示例似乎很难找到。到目前为止,我尝试过的所有操作要么什么都不做,要么 returns 出现 500 服务器错误。
原来的 some_page
仍然存在,但现在只是一堆 jpg 文件而不是索引文件
重要的是要了解您所说的示例是 Rewrites,其中用户看到的 URL 被重写,以便应用程序获得它可以理解的 URL。听起来您想要的是重定向,即 URL 客户在发送到应用程序之前更改为新的重定向。
重定向 从什么。com/directory/?m=some_page 到什么。com/directory/some_page 你可以做这个。
RewriteBase /
RewiteCond %{QUERY_STRING} m=([^&]+) [NC]
RewriteRule ^directory/.? /directory/%1 [NC, L, R]
重写 从任何东西。com/directory/?m=some_page 到任何东西。com/directory/some_page 你可以做这个。
RewriteBase /
RewiteCond %{QUERY_STRING} m=([^&]+) [NC]
RewriteRule ^directory/.? /directory/%1 [NC, L]
从任何地方重定向。com/directory/some_page /directory/?m=some_page 你可以这样做。
RewriteBase /
RewriteRule ^directory/([^/]+)/? /directory/ [NC, L, R]
从任何地方重写。com/directory/some_page /directory/?m=some_page 你可以这样做。
RewriteBase /
RewriteRule ^directory/([^/]+)/? /directory/ [NC, L]
通过阅读您的问题,我不完全确定您要做什么,但上述方法之一应该可以解决它。
.htaccess 陷入了循环,因为我无法让它处理查询字符串(很可能是因为我缺乏经验),所以我利用了导航到 [= 返回的 403 10=] 仍然存在但没有索引文件(.htaccess 拒绝目录列表)。
403 现在被发送到一个 php 错误页面,该页面使用 header()
.
重定向到 /directory/?m=some_page
的正确地址
我知道调用额外页面会产生开销,但这种情况不会经常发生(根据服务器日志),而且它有效。
我正在尝试将现有流量重定向到一个重写的站点,该站点现在在 Apache 服务器上使用带有 RewriteRule
的动态 URL,例如
重定向 whatever.com/directory/some_page
到 whatever.com/directory/?m=some_page
每个重写 URL 的示例都显示了相反的方式(动态到静态),因此工作示例似乎很难找到。到目前为止,我尝试过的所有操作要么什么都不做,要么 returns 出现 500 服务器错误。
原来的 some_page
仍然存在,但现在只是一堆 jpg 文件而不是索引文件
重要的是要了解您所说的示例是 Rewrites,其中用户看到的 URL 被重写,以便应用程序获得它可以理解的 URL。听起来您想要的是重定向,即 URL 客户在发送到应用程序之前更改为新的重定向。
重定向 从什么。com/directory/?m=some_page 到什么。com/directory/some_page 你可以做这个。
RewriteBase /
RewiteCond %{QUERY_STRING} m=([^&]+) [NC]
RewriteRule ^directory/.? /directory/%1 [NC, L, R]
重写 从任何东西。com/directory/?m=some_page 到任何东西。com/directory/some_page 你可以做这个。
RewriteBase /
RewiteCond %{QUERY_STRING} m=([^&]+) [NC]
RewriteRule ^directory/.? /directory/%1 [NC, L]
从任何地方重定向。com/directory/some_page /directory/?m=some_page 你可以这样做。
RewriteBase /
RewriteRule ^directory/([^/]+)/? /directory/ [NC, L, R]
从任何地方重写。com/directory/some_page /directory/?m=some_page 你可以这样做。
RewriteBase /
RewriteRule ^directory/([^/]+)/? /directory/ [NC, L]
通过阅读您的问题,我不完全确定您要做什么,但上述方法之一应该可以解决它。
.htaccess 陷入了循环,因为我无法让它处理查询字符串(很可能是因为我缺乏经验),所以我利用了导航到 [= 返回的 403 10=] 仍然存在但没有索引文件(.htaccess 拒绝目录列表)。
403 现在被发送到一个 php 错误页面,该页面使用 header()
.
/directory/?m=some_page
的正确地址
我知道调用额外页面会产生开销,但这种情况不会经常发生(根据服务器日志),而且它有效。