当 domain/foo 是目录时,Mod_rewrite 漂亮的 URL

当 domain/foo 是目录时,Mod_rewrite 漂亮的 URL

从简单的事情开始:

RewriteRule ^(.*)$ index.php?page=$1

如果我还想实现以下功能该怎么办:

RewriteRule ^/foo$ /index.php?page=foo #/foo IS a directory

这似乎只有在设置了 R 标志的情况下才有效,但随后会写入完整的非漂亮 URL。因此,似乎我可以重定向现有目录,但不能重写它们……也许在目录本身内使用 .htaccess?或者在 /foo/index.php 中使用一些 PHP 魔法,如 header(/index.php?page=foo)?它会起作用吗?它会符合 HTTP 标准/搜索引擎优化吗?

请帮忙!

附言:我想到了一个最奇怪的想法:将 /foo 重定向到 /not-a-dir,然后将 /not-a-dir 重写为 /index.php?p=foo 理论上应该可行……但是……拜托……真的吗?!?

答案1

mod_rewrite 有一个选项可以让它处理目录而不是将它们传递给 mod_dir:

RewriteOptions AllowNoSlash

有关更多信息,请访问Apache 文档站点

相关内容