我重建了我的旧网站。那个旧站点有一个子域:forum.example.com. 现在,它已经不存在了。使用访问我网站的人forum.example.com应该被重定向到example.com.
我的.htaccess文件:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^example.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]
Run Code Online (Sandbox Code Playgroud)
如果主机不是example.com,则重定向到example.com。不应该forum.example.com符合条件吗?
现在对于问题的可选部分,如果有人可以向我解释上述规则,那就太好了。
以下是我在上述规则中的理解:
如果主机不是example.com( !^example.com$)
重定向到http://example.com.
我不明白的是规则 regex: 的第一部分^(.*)$,然后是对它的引用 ( $1)。为什么匹配的所有内容都可以作为请求的文件路径?它不会做这样的事情吗?
http://example.com/http://www.example.com/[requested file]
Run Code Online (Sandbox Code Playgroud) 我刚刚编辑了.htaccess文件以包括:
AuthType Basic
AuthName "My Protected Area"
AuthUserFile /home/path/to/public_html/
Require valid-user
Run Code Online (Sandbox Code Playgroud)
然后我.htpasswd通过htpasswd命令创建了一个文件。我已启用模块:LoadModule authn_file_module modules/mod_authn_file.so在 Apache 配置中。
现在,当我加载页面时,出现 500 错误,Apache 日志显示:
配置错误:无法检查用户。没有用户文件?:/
我想任何URL映射如localhost/first要localhost/first.php在Ubuntu 15.04使用mod_rewrite为Apache。
以下是步骤。
phpinfo()打印正确的信息。在/etc/apache2/sites-enabled/000-default.conf,在适当的地方添加了以下内容。
<VirtualHost *:80>
<Directory /var/www/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
-- Restart Apache
Run Code Online (Sandbox Code Playgroud).htaccess在/var/www/html,
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.php [NC,L]
Run Code Online (Sandbox Code Playgroud)chmod 644 /var/www/html/.htaccess
但是像/localhost/second这样的请求不会转换为second.php.
已编辑.htaccess,将最后一行更改为RewriteRule ^second$ second.php. 然而没有成功。
在 Apache …
如何将我的网站从所有 HTTP 请求重定向到 HTTPS,并将非 www HTTPS 重定向到带有 www 的 HTTPS?
例子:
重定向 HTTP 非 www、HTTP www。& HTTPS 非 www:
HTTP://example.com/&& HTTP://www.example.com/&&HTTPS://example.com/
带有 www. 的 HTTPS 的所有内容:
HTTPS://www.example.com/