.htaccess带有扭曲的干净URL

.htaccess带有扭曲的干净URL,.htaccess,url-rewriting,.htaccess,Url Rewriting,我有这样一个URL:/pages/join.php,我需要通过.htaccess重写它:/join 我通过以下几点做得很好: RewriteRule ^join$ /pages/join.php [L] 但我还想确保,如果用户或爬行器试图直接访问/pages/join.php,它将被迫:/join,因此任何人都不应该在浏览器中看到/pages/join.php。这怎么可能呢?再次更新: RewriteCond %{REQUEST_URI} ^/join$ RewriteRule .* /j

我有这样一个URL:/pages/join.php,我需要通过.htaccess重写它:/join

我通过以下几点做得很好:

RewriteRule ^join$ /pages/join.php [L]
但我还想确保,如果用户或爬行器试图直接访问/pages/join.php,它将被迫:/join,因此任何人都不应该在浏览器中看到/pages/join.php。这怎么可能呢?

再次更新:

RewriteCond  %{REQUEST_URI}  ^/join$
RewriteRule .* /join.php?_internal [QSA,L]

RewriteCond %{QUERY_STRING} !_internal
RewriteCond %{REQUEST_URI} /join.php
RewriteRule .* /page_not_found.php [L]
另一个(更安全的)选项是将其添加到join.php文件的顶部:

<?php
if ($_SERVER['REQUEST_URI'] == '/join.php') die('NO DIRECT ACCESS!');

不起作用。它会强制更改URL,但页面不会加载。该文件本身位于:/pages/join.php。另外,我只希望它在join页面上工作,而不是在pages文件夹中的所有页面上工作。不工作。错误:“页面重定向不正确”。我猜你不能创建这样的重定向循环。