Как переписать /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
слишком рано.
Есть идеи, как это исправить, и чтовызывая его сбой на этом конкретном сервере?