我的项目在Blue主机共享主机以及我的XAMPP localhost中运行良好。
为了测试,我们将文件移动到本地ubuntu服务器。但.htaccess无法在这个ubuntu服务器上运行。
这意味着文件可以通过.php扩展访问,但是在没有.php扩展的情况下接收时会出现404错误。
.test
有效,但是
http://172.31.0.55/project/contact.php
显示404错误
这是我使用的htaccess代码。
http://172.31.0.55/project/contact
经过一些研究后,我改变了Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /project/
## hide .php extension
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php[\s?] [NC]
RewriteRule ^ %1 [R=301,L]
# To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/project/$1.php -f
RewriteRule ^(.+?)/?$ /project/$1.php [L]
Options All -Indexes
RewriteCond %{HTTP_REFERER} !^http://(www\.)?172.31.0.55/project/ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?172.31.0.55/project/.*$ [NC]
ErrorDocument 403 http://172.31.0.55/project/403-error
ErrorDocument 404 http://172.31.0.55/project/404-error
/etc/apache2/apache2.conf
到
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride none
Require all granted
</Directory>
但是现在它在尝试访问<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
服务器版本为http://172.31.0.55/project/
它是一个PHP网站
我可以在http://172.31.0.55/ Apache默认页面
中看到以下代码 Apache/2.4.18 (Ubuntu)
The configuration layout for an Apache2 web server installation on Ubuntu systems is as follows:
我尝试在htaccess中从ip地址更改为localhost。但是没有工作
我检查了文件权限/etc/apache2/
|-- apache2.conf
| `-- ports.conf
|-- mods-enabled
| |-- *.load
| `-- *.conf
|-- conf-enabled
| `-- *.conf
|-- sites-enabled
| `-- *.conf
我参考https://askubuntu.com/questions/421233/enabling-htaccess-file-to-rewrite-path-not-working
进行了这些更改答案 0 :(得分:3)
默认情况下,Apache禁止使用.htaccess文件来应用重写规则,因此首先需要允许更改文件。使用nano或您喜欢的文本编辑器在此路径中打开默认的Apache配置文件 /etc/apache2/sites-available/000-default.conf
$ sudo nano /etc/apache2/sites-available/000-default.conf
在该文件中,您会在第一行找到<VirtualHost *:80>
块。在该块的内部,添加以下新块,以便您的配置文件如下所示。确保所有块都正确缩进。
<VirtualHost *:80>
<Directory /var/www/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
. . .
</VirtualHost>
保存并关闭文件。要使这些更改生效,请重新启动Apache。
$ sudo systemctl restart apache2
我按照这些步骤解决了问题。
答案 1 :(得分:0)