0

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

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

这只是一个简单的测试,它不起作用。该 URL 仍然是市场,而不是你好。而且我试图删除我拥有的所有其他规则,并让上面的规则成为我的 htaccess 文件中唯一存在的规则,但仍然无法正常工作。

有任何想法吗?mod_rewrite 显然已打开,因为其他规则有效。

已测试但无法正常工作:

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

1 回答 1

1

强烈建议您阅读此“Apache mod_rewrite 简介”

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]

以上是经过充分测试和工作的规则。

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

第二条规则重定向marketplacehello.

第三条规则在内部重定向hello到,marketplace.php因此 URL 保留hellomarketplace.php.

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

因此,如果您访问marketplace.php它,marketplace然后hello从 hello 访问它,您将看到marketplace.php.

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

于 2013-09-01T09:37:49.587 回答