Я создал вики-страницу документации, которую хочу прикрепить к моему основному сайту, используя псевдоним для виртуального хоста. Это позволяет мне получить доступ к вики, перейдя по адресу website.com/documentation. В прошлом я успешно использовал mod_rewrite для псевдонима, но не могу заставить его работать. Псевдоним настроен правильно, так как сайт работает, но правила перезаписи отсутствуют.
Я использую doku wiki, но не важно, что я использую, поскольку apache выполняет всю работу, а не php. Я хочу переписать URL-адрес следующим образом.
Приведенные ниже правила перезаписи должны быть стандартными стандартными правилами, которые работают для dokuwiki, но они ничего не делают.
RewriteEngine On
RewriteRule ^_media/(.*) lib/exe/fetch.php?media=$1 [QSA,L]
RewriteRule ^_detail/(.*) lib/exe/detail.php?media=$1 [QSA,L]
RewriteRule ^_export/([^/]+)/(.*) doku.php?do=export_$1&id=$2 [QSA,L]
RewriteRule ^$ doku.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) doku.php?id=$1 [QSA,L]
RewriteRule ^index.php$ doku.php
Я попытался добавить обычные правила, с которыми я знаком, но ни одно из них не сработало.
RewriteRule ^documentation/([^/]*)$ /documentation/doku.php?id=$1 [L]
RewriteRule ^([^/]*)$ /doku.php?id=$1 [L]
Когда я иду в http://website.com/documentation/start в браузере появляется ошибка 404.
Запрошенный URL / документация / начало не найден на этом сервере.
Сначала проверьте, включили ли вы .htaccess в своей конфигурации Apache с помощью AllowOverride all
для пути к вашему сайту
https://httpd.apache.org/docs/2.4/en/howto/htaccess.html
Тогда я думаю, вы это ищете:
https://wiki.apache.org/httpd/RewriteQueryString
RewriteCond %{QUERY_STRING} ^/documentation/doku.php?id=(.*)
RewriteRule .* /documentation/%1/ [L,R=301]
RewriteRule ^/documentation/(.*)/ /documentation/doku.php?id=$1 [L]
Обратите внимание, что %1
используется вместо $1
чтобы поймать результат regexp RewriteCond
Как это /documentation/doku.php?id=start
покажет /documentation/start/
и будет обслуживать страницу /documentation/doku.php?id=start
В своем правиле перезаписи вы забываете /
в начале вашего регулярного выражения
RewriteRule ^/documentation/(.*)/ /documentation/doku.php?id=$1 [L]