Редактировать, я пытался сделать свой ответ коротким, я не хотел, чтобы вы добавили эту строку точно Это было просто, чтобы показать, куда должен идти пропавший слеш.
RewriteRule ^/([a-z]+)/$ /index.php?p=
Я предполагаю, что вы редактируете файл .conf в вашем каталоге конфигурации apache. Ответ Чигли предполагает, что вы редактируете конфигурационный файл .htaccess для каждого каталога.
Отредактируйте файл conf так, чтобы он выглядел так:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^TRACE
RewriteRule .* - [F]
RewriteRule ^/(test[a-z]+)/$ /index.php?id=$1 [L,R=301]
... your current stuff afterwords ...
</IfModule>
- Я думаю, проблема в том, что вам нужен начальный символ '/' в вашем RewriteRule.
- Если сначала поставить мой тест RewriteRule, он будет соответствовать.
- Я добавил префикс «test», чтобы эта строка не мешала остальной части вашего сайта. Это облегчит выделение этого правила. Таким образом, при тестировании URL должен заканчиваться символом «/» и начинаться с «теста», чтобы он соответствовал, в дополнение к 1 или более a-z.
- URL для проверки: hxxp: //...yourserver.../testkeyword/
- Это должно изменить URL в вашем браузере на: hxxp: //...yourserver.../index.php? Id = testkeyword
- Ошибка 404, которую вы видите, может означать: 1) Нет соответствующих правил, и нет файла, соответствующего вашему ключевому слову. 2) Одно или несколько правил совпадают, но полученный URL не соответствует вашим файлам php.
Как только он заработает, это настоящий RewriteRule для использования в вашем файле conf:
RewriteRule ^/([a-z]+)/$ /index.php?id=$1 [L,R=301]
Если это не работает, отредактируйте свой вопрос, чтобы включить полный код в
блок, и ваша версия httpd, как это:
# httpd -v
Server version: Apache/1.3.33 (Darwin)
Server built: Mar 20 2005 15:08:27
Наверное, это не имеет значения, но только если ...
Вот документация mod_write . В самом низу есть несколько примеров.