繁体   English   中英

htaccess重定向错误到子目录

[英]htaccess redirect error to a subdirectory

尝试重定向此方法始终有效:

RewriteRule ^user/(.*) view_channel.php?user=$1 [nc]

问题是,尝试单独重定向下面的语句有效,但是当与上面的语句结合使用它不起作用(结果是空白页):

RewriteRule ^user/videos/(.*) user_videos.php?user=$1 [nc]

有关.htaccess的更多详细信息:

Options All -Indexes
FileETag MTime Size
Options +FollowSymlinks  -MultiViews
RewriteEngine on
<FilesMatch "\.(db|inc|tmpl|h|ihtml|sql|ini|configuration|config|class|bin|spd|theme|module|cfg|cpl|tmp|log|err|inc.php|class.php)$">
order allow,deny
satisfy all
</FilesMatch>

我究竟做错了什么?

规则不是相互不兼容的。 他们也不是最终的。 像这样更改它们:

RewriteRule ^user/([^/]+) view_channel.php?user=$1 [NC,L]
RewriteRule ^user/videos/([^/]+) user_videos.php?user=$1 [NC,L]

[^/]+匹配一个/而不是/字符。 这样可以确保第一个规则不能匹配第二个模式,因为它匹配.* ,因为它可以匹配任何字符,包括/

这是因为您的正则表达式^user/(.*)也匹配URI,如/user/videos/something

有这样的规则:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]

RewriteRule ^user/videos/([^/]+)/?$ user_videos.php?user=$1 [L,NC,QSA]
RewriteRule ^user/([^/]+)/?$ view_channel.php?user=$1 [L,QSA,NC]

第二个RewriteRule语句与已经重写的url相匹配。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM