我想使用RewriteRule更改格式的网址
http://server.com/srv/index.php/12345/somedynamichash/somedynamichash/somedynamichash
其中/srv/index.php/12345/
对于格式的网址是静态的:
http://server.com/srv/index.php/12345/XXXX/somedynamichash/somedynamichash/somedynamichash
当且仅当请求中缺少XXXX
时。
这两个
RewriteRule "^/(srv/index\.php/\d+/)(?!XXXX(?:$|/))(.*)" "$1XXXX/$2" [R]
也不是这个组合
RewriteRule ^/srv/index\.php/(\d+)/(XXXX/.*)$ srv/index.php/$1/$2 [L]
RewriteRule ^/srv/index\.php/(\d+)/(.*)$ srv/index.php/$1/XXXX/$2 [L]
的工作。
答案 0 :(得分:1)
RewriteCond是解决方案。只有当$ 1与XXXX不匹配时,它才会应用RewriteRule:
RewriteEngine on
RewriteCond "$1" "!^XXXX$"
RewriteRule "^/srv/index.php/12345/([^/]+)/(.*)$" "http://localhost/srv/index.php/12345/XXXX/$1/$2"
答案 1 :(得分:0)
此规则应该适用于站点根目录.htaccess或Apache config:
RewriteEngine On
RewriteRule ^/?(srv/index\.php/\d+)/(?!XXXX(?:/.*)?$)(.*)$ /$1/XXXX/$2 [L,NC,R=302,NE]