localhost与远程服务器htaccess值

时间:2016-06-19 13:09:06

标签: php apache .htaccess mod-rewrite

我已将Usbserver设置为我的PC上的本地网络服务器,因此服务器根目录为http://localhost:8081/,但我的所有webproject都位于本地服务器的http://localhost:8081/WWW/PHP/子目录中。

现在:一切正常 - 所有相对路径都可以正常工作,但是当我使用.htaccess文件时,我想设置我的自定义404.php页面,其相对路径如下:

ErrorDocument 404 /php/errors/404.php

...它只是没有按预期工作因为它当然指向http://localhost:8081/而不是,比如说,http://localhost:8081/WWW/PHP/myproject/这是我实际代理的服务器根类(cos一次上传到远程服务器它将成为http://myproject.com/)。

这在远程服务器上绝对没问题,但在本地服务器结构上没有。我也尝试了一个这样的建议:

ErrorDocument 404 ./php/errors/404.php

...但最终显示空白页面,显示句子“./php/errors/404.php”。

问题:如何在“普遍”中编写.htaccess中的代码,因此认为根服务器位于“myproject”目录而不是“http://localhost:8081/”但是一旦上传到我的远程服务器,让我们说http://myproject.com/它仍能正常工作吗?

记住:我无法在Usbserver设置中使用重写本地服务器的根目录,因为我在“http://localhost:8081/WWW/PHP”中也有其他网页量,所以他们都会停止工作!

我想有一些RegEx代码可以解决这个问题(正如我在Stackoverflow上看到很多次这样做的那种东西)但我自己在RegEx中非常糟糕,所以没有其他人的帮助我是“丢失”。

我在搜索之前已经搜索了网页:有很多解决方案,但我没有找到任何可以解决这个特定任务的问题(大多数建议只是在我的虚拟服务器中重写服务器root - Usbserver - 我不能做的设置由于上面解释的原因)。

我只是需要它在localhost和远程服务器上正常工作,而不是每次我将我的网站上传到远程服务器时重写我的.htaccess代码,反之亦然。

P.S。:我也注意到当我为我的本地服务器设置我的自定义404.php页面时使用absolutle路径,如:

ErrorDocument 404 http://localhost:8081/WWW/_PHP_/myproject/php/errors/404.php

...它有效但是它改变了自定义404页面的URL而不是保留原来的“不存在的”URL地址 - 为什么?使用正常的未编辑404页面的网址,URL会发生变化,它会保持不变(=不存在的链接)。

编辑 - 最终解决方案: 因此,经过几个小时的播放,浏览网页,搜索任何一些额外的有用信息,我终于让它完全按照我想要的方式工作 - 在localhost和远程服务器的情况下指定错误页面(404等)的不同目录,这里是(请注意:这是我自己的代码所以它可能看起来不太好 - 我是.htaccess东西的新手 - 但至少它真的对我有用,因为我预期它会起作用):

# RULES FOR ERROR PAGES DIRECTORY IN CASE OF localhost:8081
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} ^localhost:8081 [NC]
RewriteRule .? /WWW/_PHP_/myproject/php/errors/404.php [L]

# RULES FOR ERROR PAGES DIRECTORY IN CASE OF remote server (actual webpage on public server)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} !^localhost:8081 [NC]
RewriteRule .? /php/errors/404.php [L]

2 个答案:

答案 0 :(得分:0)

错误文档指令中不允许使用相对路径。所以你可以使用绝对路径而不是完整的URL。

ErrorDocument 404 /www/_php_/myproject/php/errors/404.php

参考:

https://httpd.apache.org/docs/2.4/custom-error.html

答案 1 :(得分:0)

这是可行的解决方案

git add