Php HTACCESS:如何屏蔽重定向的URL并保留;友好的;URL栏中的URL

Php HTACCESS:如何屏蔽重定向的URL并保留;友好的;URL栏中的URL,php,apache,.htaccess,mod-rewrite,redirect,Php,Apache,.htaccess,Mod Rewrite,Redirect,我有一个很好用的规则。为简单起见,url格式使用aaa、bbb和ccc,根在我的本地主机上为“aaa”,而[[一些数字]]和[[一些其他数字]]仅代表任意长度的整数,如下所示: aaa/bbb.php?bbb_id=[[SOME NUMBER]]#ccc.php?ccc_id=[[SOME OTHER NUMBER]] 我使用此“友好”URL格式映射: aaa/bbb[[SOME NUMBER]]/ccc[[SOME OTHER NUMBER]] …使用此重写规则,此规则非常有效: Rewr

我有一个很好用的规则。为简单起见,url格式使用aaa、bbb和ccc,根在我的本地主机上为“aaa”,而[[一些数字]]和[[一些其他数字]]仅代表任意长度的整数,如下所示:

aaa/bbb.php?bbb_id=[[SOME NUMBER]]#ccc.php?ccc_id=[[SOME OTHER NUMBER]]
我使用此“友好”URL格式映射:

aaa/bbb[[SOME NUMBER]]/ccc[[SOME OTHER NUMBER]]
…使用此重写规则,此规则非常有效:

RewriteRule ^aaa([0-9-]+)/bbb([0-9-]+)/?$ /aaa.php?aaa_id=$1#bbb.php?bbb_id=$2 [NE]
(注意,我需要[NE],因为URL中有#。)

因此:

…变成/重定向到:

aaa/bbb.php?bbb_id=8#ccc.php?ccc_id=232

这很好用。但是什么是重写条件,一旦重定向发生,允许“友好”URL保留在URL栏中?我已经在网上研究了其他示例,我被难住了。

您需要将
[L]
添加到重写规则中,以便在其匹配后停止处理。它应该执行内部重定向,您可以在地址栏中使用
aaa/bbb8/ccc232

RewriteRule ^aaa([0-9-]+)/bbb([0-9-]+)/?$ /aaa.php?aaa_id=$1#bbb.php?bbb_id=$2 [NE,L]

让我知道你是怎么做的

谢谢…我按照你的建议编辑了规则。奇怪的是,当我现在运行它时,屏幕变成了空白;当我查看源代码时,它就在那里了……因此它正确地处理了php文件,并且URL确实在状态栏中保持aaa/bbb8/ccc232……但是没有显示任何内容。当我刷新屏幕时,它仍然是空白的,但是源代码仍然是准确的,aaa/bbb8/ccc232仍然保留在URL栏中。还有一件事:将R=301添加到标志中(使其成为[NE,L,R=301])允许页面显示,但URL栏会显示aaa/bbb.php?bbb_id=8#ccc.php?ccc_id=232的“不友好”URL(使用我们讨论的示例数字)。我试图做到的是,在页面被处理和显示后,URL保持aaa/bbb8/ccc232;我不想显示重定向的php代码;一旦重定向完成,我希望aaa/bbb8/ccc232保留在URL栏中。@Tom我已经提供给你了。这就是您在内部重定向的方式。您根本不能使用R标志,这意味着重定向,否则它将执行外部重定向并显示php URL。空白页通常表示存在PHP错误。您需要调试并确保通过在PHP中进行测试获得$\u GET数组。您还需要检查错误日志。我怎么强调都不过分。错误日志通常对查找错误最有帮助。对不起,没有骰子。执行脚本时,错误日志不显示任何错误。我已经通过清除以前的错误并重新开始验证了这一点。还有其他原因导致这种行为吗?同样:正确的HTML被服务器发送到浏览器窗口,但没有显示任何内容(我已经检查了使用动态地址和静态地址时提供给浏览器的源代码,得到的HTML完全相同。)我认为问题可能与页面上Javascript无法访问的已发布值的引用有关,因为页面是通过不包含这些值的静态URL获取的。Javascript太长,无法在此处发布,因此我已将有问题的文件以纯文本形式上传到此处:我将感谢您的任何评论/见解/建议;Javascript位于代码的底部。
RewriteRule ^aaa([0-9-]+)/bbb([0-9-]+)/?$ /aaa.php?aaa_id=$1#bbb.php?bbb_id=$2 [NE,L]