Как переписать /foo-bar
на foo-bar.html
, но /foo/bar
на foo--bar.html
с помощью mod_rewrite?Как переписать/foo-bar в foo-bar.html, но/foo/bar в foo-bar.html с помощью mod_rewrite?
Иными словами, замените все косые черты в URI запроса на --
, затем добавьте .html
.
Я написал следующий код:
RewriteEngine On
RewriteBase/
# Take care of /foo/bar and /foo-foo/bar-bar
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z0-9-]+)/([a-z0-9-]+)/?$ $1--$2.html [L]
# Take care of /foo, or /foo-bar-baz-whatever-no-slashes
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z0-9-]+)/?$ $1.html [L]
Это, кажется, работает на некоторых серверах, но по моему, кажется, запутались в переписывает:
Запрошенный URL
/foo.html/bar
не был найден на этом сервер.
Похоже, что приложение .html
слишком рано.
Любые идеи о том, как исправить это, и что приводит к его сбою на этом конкретном сервере?
Weird, кажется, работает без 'директивы RewriteBase'. Почему? Благодаря! – Wendy