我有这个重写条件:
RewriteCond %{REQUEST_URI} !.*\.(css|js|php|html|png|jpg|gif)|notes|messages|/delete/|/achors_data/|/composer/|/pagination/|/mom_mp3/|/swf/|/js/|/stories/|/wall/|/news_feed/|/notifications/|opencv|hdflvplayer|hdflvplayer2|videojs|ffmpeg|mediaplayer|uploadify|/v/|/video/|/options/|show_msg_dialogs|facedetector|classes|right_column_modules|functions|maurice|pokes|opticrop|geoip_city|/autocomplete/|chrono|ajax|editprofile|tag|Svetlozar.NET
它必须与在 root 上创建的每个新目录一起维护,因为我有一个重写规则,它将所有内容从不存在的目录(root/mydirectory/ 和 root/mydirectory_b/)重定向到 root/specialdirectory/,除非条件是只是根目录中的任何现有目录,不需要应用转到特殊目录的规则。
我的问题是是否可以编写 rewritecond 或采取另一种方法来完成相同的任务,而不必手动编写在根目录下创建的 .htaccess 中的每个新目录。
所以这是使用条件的重写规则,它使所有内容(root/anydir/)都转到 root/master
RewriteCond %{REQUEST_URI} !.*\.(css|js|php|html|png|jpg|gif)|notes|messages|/delete/|/search/|/buttons/|/achors_data/|/composer/|/pagination/|/mom_mp3/|/swf/|/js/|/stories/|/wall/|/news_feed/|/notifications/|opencv|hdflvplayer|hdflvplayer2|videojs|ffmpeg|mediaplayer|uploadify|/v/|/video/|/options/|show_msg_dialogs|facedetector|classes|right_column_modules|functions|maurice|pokes|opticrop|lists|geoip_city|/autocomplete/|chrono|ajax|editprofile|tag|Svetlozar.NET
RewriteRule ^([A-Za-z-0-9-_.]+)?$ master/$2
然后是只有在根目录之外的目录friends 应该执行某个操作anything/friends 去anything/view_friends.php 的问题
我想要的是能够编写一个考虑到根目录中每个现有目录的 RewriteCond - 一个通配符。
所以我最终会在没有维护的情况下编写如下内容
RewriteCond %{REQUEST_URI} ! * existing directories - except just one
代替:
RewriteCond %{REQUEST_URI} !.*\.(css|js|php|html|png|jpg|gif)|pokes|opticrop|notes|/delete/|/search/|/buttons/|/achors_data/|/composer/|/pagination/|/mom_mp3/|/swf/|/js/|/stories/|/wall/|/news_feed/|/notifications/|opencv|hdflvplayer|hdflvplayer2|videojs|ffmpeg|mediaplayer|uploadify|/v/|/video/|/options/|show_msg_dialogs|facedetector|classes|right_column_modules|functions|maurice|lists|geoip_city|/autocomplete/|chrono|ajax|editprofile|tag|Svetlozar.NET
RewriteRule ^([A-Za-z-0-9-_.]+)/friends $1/view_friends.php
目录必须作为 rewritecond 应用的真实目录存在,因为我将幻影目录用于第一个 rewriterule。