Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess htaccess重写规则起作用,但浏览器不显示友好URL_.htaccess_Url Rewriting_Friendly Url - Fatal编程技术网

.htaccess htaccess重写规则起作用,但浏览器不显示友好URL

.htaccess htaccess重写规则起作用,但浏览器不显示友好URL,.htaccess,url-rewriting,friendly-url,.htaccess,Url Rewriting,Friendly Url,我只想有一个URL: example.com/connect/admin/create 重定向到: example.com/connect/admin/create.php 我在.htaccess文件中有以下代码: RewriteEngine On RewriteBase / RewriteRule ^connect/admin/create$ http://example.com/connect/admin/create.php [R=301,L,NE] 它可以正确地重定向。问题是浏览器现在

我只想有一个URL:

example.com/connect/admin/create

重定向到:

example.com/connect/admin/create.php

我在.htaccess文件中有以下代码:

RewriteEngine On
RewriteBase /
RewriteRule ^connect/admin/create$ http://example.com/connect/admin/create.php [R=301,L,NE]
它可以正确地重定向。问题是浏览器现在显示的是

example.com/connect/admin/create.php

当我仍希望它显示时:

example.com/connect/admin/create
是否需要向.htaccess添加其他内容


谢谢

您的原始重写规则包含通过
R=301的显式重定向。该标志需要移除。其次,
重写规则的右侧(目标)包括
http://example.com/
这也会隐式强制浏览器重定向。相反,只使用右侧的相对路径:

RewriteEngine On
RewriteBase /
RewriteRule ^connect/admin/create$ connect/admin/create.php [L,NE]
如果您在
connect/admin
中还有其他操作,并且希望从中剥离
.php
,则可以通过更通用的方式完成此操作:

# Capture the action into $1 and pass it to the redirect target.
RewriteRule ^connect/admin/([^/.]+)/?$ connect/admin/$1.php [L,NE]

这是因为您有一个通过
R=301
的硬重定向。如果你不想让它重定向浏览器,只要删除它,它就会默默地重写。此外,您还需要删除
http://example.com/
根据您的回复,我将代码更改为:RewriteRule^connect/admin/create$/connect/admin/create.php[L,NE]结果仍然是一样的。您还需要从
/connect/admin/create.php
中删除前导的
/
。绝对路径将导致它尝试重定向。它实际上由于任何原因被缓存在浏览器中。我清除了缓存,它成功了。好的,我将把它放在下面作为答案