我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等。
也许这一切都是徒劳的,或者比它的价值更多的麻烦?
无论哪种方式都在寻找明确的答案。