我试图让我所有的vlog在一个文件夹内运行的一个PHP vlog页面。我使用一个简单的重定向后,我做了所有的strip/force管家。但这是404。我错过了什么?
RewriteEngine on
# Follow symbolic links
Options +FollowSymLinks
# Strip www.
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^www.(.*)$ [NC]
RewriteRule .* http://%1%{REQUEST_URI} [R=302]
# Force HTTPS:
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^www.(.*)$ [NC]
RewriteRule .* https://%1%{REQUEST_URI} [R=302]
# Strip php extension
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^([^.]+)$ $1.php [NC]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /([^ ]+).php
RewriteRule ^/?(.*).php$ /$1 [R=302]
# Strip trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [R=302]
#manage vlogs
RewriteRule ^/fol-der-name/(.+)$ /fol-der-name/vlog?url=$1
我试了这些,他们都失败了
RewriteRule ^/fol-der-name/(.*)$ /fol-der-name/vlog?url=$1
RewriteRule ^/fol-der-name/(.+)$ /fol-der-name/vlog?url=%1
RewriteRule ^/fol-der-name/(.*)$ /fol-der-name/vlog?url=%1
修复方法很简单。转义最后一行左侧的连字符:
RewriteCond %{QUERY_STRING} ^$ [NC]
RewriteRule ^fol-der-name/(.+)$ /fol-der-name/vlog.php?url=$1 [L,NC]
我终于修复了我自己的错误,在痛苦的一天半之后,我不骗你,进入。htaccess的细节,学习我不想学习的东西,坦率地说,不觉得知道有任何智慧(例如,你知道Apache处理你写的RewriteCon条件之后,它处理你写的RewriteRule ?)
无论如何,我建议所有沉迷于mod_rewrite或htaccess的人重写我的旅程中的这两个惊人的片段:
a) https://www.301-redirect.online/htaccess-rewrite-generator(这纠正了问题中我代码的最后一行,并实际产生了修复-哦,这是我遇到过的最好的。htaccess生成器,我看了大约6)
b) https://www.danielmorell.com/guides/htaccess-seo/redirects/introduction-to-redirects(这解释了很多重定向应该如何编码,特别是查询-为什么使用% v $ v斜杠-页面上的最终图表值得获得诺贝尔奖)