.htaccess htaccess重写规则起作用,但浏览器不显示友好URL
我只想有一个URL: example.com/connect/admin/create 重定向到: example.com/connect/admin/create.php 我在.htaccess文件中有以下代码:.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] 它可以正确地重定向。问题是浏览器现在
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
中删除前导的/
。绝对路径将导致它尝试重定向。它实际上由于任何原因被缓存在浏览器中。我清除了缓存,它成功了。好的,我将把它放在下面作为答案