我mod-rewrite
在我的.htaccess
文件中使用以下内容:
RewriteRule ^$ pages/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ pages/$1 [L]
目的是隐藏调用的子目录,使其/pages/
不显示在 URL 中。
所以这: http://mysite.com/pages/home.html
看起来像这样: http://mysite.com/home.html
它有效,但有一些意想不到的后果。
作为.htaccess
我上面发布的代码的直接结果,我的 404 路由根本不再工作。任何应该触发 404 错误页面的东西都会生成一个500 Server Error
.
怎么修?
编辑:
如上所述,是否定义了自定义 404 页面.htaccess
并不重要。没有它,或者错误页面的路径不正确,服务器仍应路由到其默认的 404 页面,而不是提供500 Server Error
.
当然,必须有一种标准方法来抑制 URL 的各个部分,而不会破坏 404 错误的正常路由。 从我的在线研究看来,我上面的方法通常会破坏 404 路由,但到目前为止,我还没有看到任何适用的解决方案。(这不是 Wordpress 安装;只是静态 HTML 内容)
编辑2:
由于我只想抑制 URL 中的一个目录,因此我从未提到我还有其他文件和目录,它们是/pages/
不能指向的同级文件/pages/
,例如/graphics/
, /includes/
, /css/
, /cgi-bin/
, robots.txt
,favicon.ico
等。
也许这一切都是徒劳的,或者比它的价值更多的麻烦?
无论哪种方式都在寻找明确的答案。