所以我花了太多时间在这上面 - 有点绝望。
htaccess的:
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^submit/?$ submit.php [NC,L]
的/ etc / apache2的/位点可用/ applicapple:
<VirtualHost *:80>
ServerAdmin support@perpetualcontrast.com
DocumentRoot /var/www/applicapple
ServerName applicapple.localhost
<Directory /var/www/applicapple/>
Options Indexes FollowSymLinks MultiViews
RewriteEngine On
AllowOverride All
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
submit.php肯定存在。 访问applicapple.localhost / submit:
使用目录中的submit.php,我得到The requested URL /submit was not found on this server.
如果我删除submit.php,我会收到The requested URL /submit.php was not found on this server.
如果我访问localhost / applicapple,它会按预期工作。
有人能告诉我这里发生了什么吗?
答案 0 :(得分:0)
看起来你在忽略'/'
试试这个
RewriteRule ^/submit/?$ submit.php [NC,L]
答案 1 :(得分:0)
问题是Apache中的MultiViews选项在目录中搜索具有相同名称的文件,因此如果/submit.php存在,/ submit将被解释为/submit.php。我关闭了这个选项,它现在按预期工作。
答案 2 :(得分:0)
你的RewritRule是
RewriteRule ^ / submit /?$ submit.php [NC,L]
我认为它不会起作用,因为它意味着'匹配/提交到submit.php,所以如果网址是 www.xyz.com/submit ,它将被重定向为< strong> www.xyz。 comsubmit.php off-course这将导致'400 Bad request',因为您的apache服务器不知道如何处理请求。
我在我的电脑上测试了配置,只是通过编辑重写规则来重定向到/submit.php而不仅仅是submit.php将解决问题。
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^/submit/?$ /submit.php