Можно ли заменить некоторые косые черты (/) URL-адреса точками (.) В RewriteRule? Это не обязательно должно выполняться исключительно с помощью RewriteRule, но определенно не с помощью сценария.
Пример 1:
INPUT: /document/my/document.html OUTPUT: /document-my.document.html
Пример 2:
INPUT: /document/depth/of/path/can/vary.html OUTPUT: /document-depth.of.path.can.vary.html
Я думаю, вы могли бы сделать это, используя итеративный подход. «Переменное количество замен» означает, что вы должны использовать одно и то же правило несколько раз, по одному для каждого «/», подлежащего замене.
Попробуй это:
RewriteRule ^/([^/]+)/(.*)$ /$1.$2 [N]
Некоторые детали:
/
+ что угодно + /
+ что угодно/
явно, потому что он всегда будет там и не должен быть заменен .
[N]
флаг означает: Re-run the rewriting process (starting again with the first rewriting rule). This time, the URL to match is no longer the original URL, but rather the URL returned by the last rewriting rule.
(из Документация Apache mod_rewrite)Что сработало (благодаря ответу Джонатана Кларка):
RewriteCond %{REQUEST_URI} ^/document.*
RewriteRule ^/([^/]+)/(.*)$ /$1.$2 [N]
RewriteRule ^/document\.(.*)\.html /document-$1 [L]