我已经看到了很多关于此的文章,所以很抱歉。我试图阅读一下它是如何工作的,但收效甚微:从这里开始是我的.htaccess
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(([^/]+/)*[^.]+)$ /$1.php [L]
第一个将http设置为https-它可以使.htaccess处于活动状态。第二个是从网址中删除.php的-并非如此。
我的主要问题是如何从每个URL中删除.php。我的第二个重写规则就是要这样做,但事实并非如此。是的,它是从上一个问题中复制而来的,但是我真的很想确切地理解语法的含义,以便我能理解为什么它不起作用。
所以我的问题是:
RewriteCond
和RewriteRule
?我看过许多文档,包括Apache http://httpd.apache.org/docs/current/rewrite/ docs,但我的情况并不好。一个厚脸皮的简单问题...我需要重复RewriteEngine On还是只需要一次?
像这样(请参阅每个规则上方的注释):
RewriteEngine On
# redirect externally http -> https for non POST data
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
# To externally redirect (change URL in browser) /dir/file.php to /dir/file
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} \s/+(.+?)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=301,NE,L]
# To internally (silent) rewrite /dir/file to /dir/file.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]
参考
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句