.htaccess 简单的URL重写不起作用

.htaccess 简单的URL重写不起作用,.htaccess,.htaccess,首先,我知道这有几个问题,但我的经验是,其他规则可以工作,比如删除.php扩展名,而此规则不起作用: RewriteRule ^hello$ marketplace [NC,R=301] 这只是一个简单的测试,它不起作用。URL仍然是marketplace,而不是hello。我试图删除所有其他规则,让上面的规则成为我的htaccess文件中唯一存在的规则,但仍然不起作用 有什么想法吗?mod_rewrite显然是打开的,因为其他规则可以工作 已测试但不工作: RewriteRule ^mark

首先,我知道这有几个问题,但我的经验是,其他规则可以工作,比如删除.php扩展名,而此规则不起作用:

RewriteRule ^hello$ marketplace [NC,R=301]
这只是一个简单的测试,它不起作用。URL仍然是marketplace,而不是hello。我试图删除所有其他规则,让上面的规则成为我的htaccess文件中唯一存在的规则,但仍然不起作用

有什么想法吗?mod_rewrite显然是打开的,因为其他规则可以工作

已测试但不工作:

RewriteRule ^marketplace$ /hello [NC,R=301]

以上是一条经过充分测试的有效规则

第一条规则将把
.php
重定向到类似URL的目录,例如
domain.com/marketplace.php
变成
domain.com/marketplace

第二条规则将
marketplace
重定向到
hello

第三条规则在内部将
hello
重定向到
marketplace.php
,因此URL仍然是
hello
,内容为
marketplace.php

最后一条规则将验证它的目录不存在,但作为php文件存在,并在内部重定向到它

因此,如果您访问
marketplace.php
,它会转到
marketplace
,然后
hello
,在hello中您将看到
marketplace.php
的内容


如果
marketplace.php
不存在,则会出现404错误。

我看到我切换了位置,但是,它仍然不起作用。仍然没有重定向。看看我的edit.Nope,URL实际上是marketplace.php,我有一个规则,删除.php扩展名,使其仅为“marketplace”。现在我只想测试将marketplace更改为hello。@Juliansange hello.php是否存在,或者您是否有将其内部重写为php的规则?不,不存在。@Juliansange然后将生成404,因为您将marketplace重定向到一个不存在的位置,除非您有另一条规则捕获所有不存在的URL,比如index.php
Options +FollowSymLinks -MultiViews

RewriteEngine On
RewriteBase /

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(.*)\.php [NC]
RewriteRule ^ /%1 [R=301,QSA,L]

# Redirect to hello
RewriteRule ^marketplace$ /hello [R=301,NC,L]
# Show the content of marketplace on hello
RewriteRule ^hello$ /marketplace.php [NC,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f
RewriteRule ^([^/]+)/?$ $1.php [L]