3

我正在通过 USB 棒运行便携式服务器。问题是我的本地机器上也安装了 WAMP,Apache 不知何故在 Windows 启动时启动,因为一些我现在不记得并且无法更改的随机原因。我想在这种情况下准备我的便携式服务器,因此从进程中关闭 httpd.exe 并启动我的便携式服务器不是一种选择。无论如何,由于 httpd.exe 已经处于活动状态,我的便携式服务器的 WordPress 站点只能通过 localhost:81 访问 - 这是一个问题,因为 WP 站点非常依赖于 URL,我不想在 WP 上包含带有端口的 url数据库。

这是我想通过 .htaccess 做的事情:

  • 在除 error.php 文件之外的任何路径上检查是否不是端口 80
  • 如果不是端口 80 重定向到 /error.php?code=port

它有可能优先于 WP 重定向或 URL 处理吗?

在 error.php 中,我提供了有关如何手动关闭 httpd.exe 等信息,以便我的家人和朋友可以访问便携式站点。它有点像一个画廊和日历应用程序,用于事件和其他类似的东西......

请帮忙?我根本想不通。我知道其他人可能还没有运行 apache,但我想为这种情况做准备。

类似于以下内容,但以下内容不起作用。

# BEGIN WordPress
<IfModule mod_rewrite.c>
    <If "%{SERVER_PORT} = 80">
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </If>
    <Else>
    RewriteEngine On
    RewriteRule ^(error.php)($|/) - [L]
    RewriteRule ^(.*)$ /error.php?code=port [L]
    </Else>
</IfModule>
# END WordPress
4

3 回答 3

2
#  <If "%{SERVER_PORT} = 80">
RewriteEngine On
RewriteBase /
RewriteCond  %{SERVER_PORT} ^80$ 
RewriteRule ^index\.php$ - [L]
RewriteCond  %{SERVER_PORT} ^80$ 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
#</If>
#<Else>
RewriteEngine On
RewriteCond  %{SERVER_PORT} !^80$ 
RewriteRule ^(error.php)($|/) - [L]
RewriteCond  %{SERVER_PORT} !^80$ 
RewriteRule ^(.*)$ /error.php?code=port [L]
#</Else>
于 2012-09-22T16:57:35.183 回答
0

你可以试试这个 apache 配置

RewriteEngine on 
RewriteCond  %{SERVER_PORT} !^80$ 
RewriteRule ^(.*) http://%{SERVER_NAME}:80%{REQUEST_URI} 

RewriteCond  %{SERVER_PORT} ^80$ 
RewriteRule .* http://example.com/index.php [L]

第 1 段如果不是 80 则重定向

第二个只是您可以尝试的替代方法,如果您只想匹配 80

有关重写的更多信息, http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html

于 2012-09-22T04:00:21.003 回答
0

VirtualHosts是您正在寻找的。

一个关于如何实现http://wplocal/ http://wp.local/指向/var/www/wpANDhttp://localhost/ http://http.local指向的小例子/another/root/path

NameVirtualHost *:80

<VirtualHost *:80>
    ServerAdmin wp@you.com
    DocumentRoot "/var/www/wp"
    ServerName wplocal
    ServerAlias wp.local
    ErrorLog "/somepath/here"
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin you@you.com
    DocumentRoot "/another/root/path"
    ServerName localhost
    ServerAlias http.local
    ErrorLog "/logs/path"
</VirtualHost>

看到这个解释这些东西的酷图片。

希望有帮助。

于 2012-09-22T04:12:19.843 回答