URL中的连字符-重定向失败-以前的指令是否干扰?



我试图让我所有的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斜杠-页面上的最终图表值得获得诺贝尔奖)

相关内容

最新更新