我已经打了几个小时的头,我似乎无法得到这个工作。 请帮忙。 我试图让Apache打开PHP文件没有扩展名。 这是我的apache2.conf:
Mutex file:${APACHE_LOCK_DIR} default PidFile ${APACHE_PID_FILE} Timeout 300 KeepAlive On MaxKeepAliveRequests 100 KeepAliveTimeout 5 User ${APACHE_RUN_USER} Group ${APACHE_RUN_GROUP} HostnameLookups Off ErrorLog ${APACHE_LOG_DIR}/error.log LogLevel warn IncludeOptional mods-enabled/*.load IncludeOptional mods-enabled/*.conf Include ports.conf <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride Indexes Allow from All Require all granted </Directory> <Directory /var/www/subdomain.example.com/public_html > Options +MultiViews </Directory> AccessFileName .htaccess <FilesMatch "^\.ht"> Require all denied </FilesMatch> IncludeOptional sites-enabled/*.conf
我有这两个configuration文件启用网站(禁用000-default.conf)..这是第一个,让我们叫它example.com.conf:
<VirtualHost *:80> ServerName example.com ServerAlias www.example.com ServerAdmin [email protected] DocumentRoot /var/www/example.com/public_html ErrorLog ${APACHE_LOG_DIR}/example.com.error.log CustomLog ${APACHE_LOG_DIR}/exmple.com.access.log combined </VirtualHost>
并为第二个子域.example.com.conf:
<VirtualHost *:80> ServerName subdomain.example.com ServerAdmin [email protected] DocumentRoot /var/www/subdomain.example.com/public_html <Directory /var/www/subdomain.example.com/public_html > allow from all AllowOverride All Options FollowSymLinks Options +MultiViews # RewriteCond %{REQUEST_FILENAME} !-d # RewriteCond %{REQUEST_FILENAME}\.php -f # RewriteRule ^(.*)$ $1.php </Directory> ErrorLog ${APACHE_LOG_DIR}/subdomain.example.com.error.log CustomLog ${APACHE_LOG_DIR}/subdomain.example.com.access.log combined </VirtualHost>
有了这个:
所以我猜这是我的apache的configuration文件的问题。 。 。 pleeeeease帮助。 我究竟做错了什么?
你需要“MultiviewsMatch Any”吗? 这是因为文件扩展名不像txt / html / etc那样是一个mimetype映射。
这是实现它的一种方式:
<Directory /var/www/> RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}.htm -f RewriteRule ^(.*)$ $1.htm RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}.html -f RewriteRule ^(.*)$ $1.html RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^(.*)$ $1.php </Directory> <VirtualHost *:80> ServerName example.com ServerAlias www.example.com ServerAdmin [email protected] DocumentRoot /var/www/example.com/public_html ErrorLog ${APACHE_LOG_DIR}/example.com.error.log CustomLog ${APACHE_LOG_DIR}/exmple.com.access.log combined </VirtualHost> <VirtualHost *:80> ServerName subdomain.example.com ServerAdmin [email protected] DocumentRoot /var/www/subdomain.example.com/public_html ErrorLog ${APACHE_LOG_DIR}/subdomain.example.com.error.log CustomLog ${APACHE_LOG_DIR}/subdomain.example.com.access.log combined </VirtualHost>
#是一个注释,所以它禁用后写命令 \. 在正则expression式中是逃避的,在它之外是不需要的 你也可以简化一些冗余的代码:
<Directory /var/www/subdomain.example.com/public_html > Options +MultiViews </Directory>
和
<Directory /var/www/subdomain.example.com/public_html > allow from all AllowOverride All Options FollowSymLinks Options +MultiViews </Directory>
可以写简单
<Directory /var/www/subdomain.example.com/public_html > AllowOverride All Options +FollowSymLinks +MultiViews </Directory>