Переписать URL не работает в файле .htaccess

0

У меня проблема с использованием.htaccess, чтобы переписать некоторый дружественный URL.

Корневой URL-адрес: http://www.example.com/my/

Рабочий URL-адрес: http://www.example.com/my/Post.php?id=2

Оба файла.htaccess и Post.php находятся в подкаталоге http://www.example.com/my/

Но я хотел, чтобы это было следующим: http://www.example.com/my/job/kuantan/?id=2

Конфигурация.htaccess, как показано ниже:

DirectoryIndex index.php

Options All -Indexes

#ErrorDocument 404 /404.php

Options +FollowSymLinks -MultiViews
RewriteEngine On

RewriteCond %{HTTP_HOST} !^www.example.com$ [NC]

RewriteRule ^job/kuantan/([0-9]+)  /Post.php?id=$1 [L,QSA, NC]

НО, как только я развернул вышеуказанный файл конфигурации.htaccess, он также запросил 500 внутренних сообщений об ошибках.

Что-то не хватает или неправильно в конфигурации.htaccess? Пожалуйста, посоветуйте и по достоинству оцените, если кто-то может дать руку. Благодарю.

  • 1
    Ваше правило закомментировано, попробуйте удалить # из #RewriteRule ^job/kuantan/([0-9]+) /Post.php?id=$1 [L,QSA, NC]
  • 0
    Привет IkoTiskashi, извините, я удалил # комментарий. Это тоже не сработало. Пожалуйста посоветуй!
Теги:
.htaccess
mod-rewrite
url-rewriting

3 ответа

0

Предполагая, что.htaccess и Post.php находятся в подкаталоге /my/:

DirectoryIndex index.php
Options All -Indexes
#ErrorDocument 404 /404.php
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.example.com$ [NC]
RewriteRule ^job/kuantan/([0-9]+)$  Post.php?id=$1 [L,QSA,NC]

Удалите все пробелы между []. Измените /Post.php?id=1 на Post.php?id=$1.

  • 0
    Привет IkoTikashi, спасибо за быстрый ответ. Действительно, и файл .htaccess, и файл Post.php находятся в подкаталоге example.com/my . В соответствии с вашими рекомендациями, он все еще не работает и получил это сообщение об ошибке «404 NOT Found - запрошенный URL / my / задание / kuantan / не найдено на этом сервере. " , Кроме того, введенный URL был " example.com/my/job/kuantan/?id=8 " ... Хм ... странно, и я понятия не имею, что здесь пошло не так. Пожалуйста посоветуй.
  • 1
    Если вам это не нужно, закомментируйте RewriteCond %{HTTP_HOST} !^www.example.com$ [NC] , также убедитесь, что mod_rewrite действительно установлен.
Показать ещё 3 комментария
0

Вам нужно просто одно правило:

RewriteRule ^/my/job/kuantan/$ /my/Post.php

Строка запроса переносится по умолчанию.

  • 0
    Привет, Бобди, спасибо за ответ. Кстати, я сделал то же самое, что вы указали. Но это снова не удалось. -> RewriteRule ^ / my / job / kuantan / $ /my/OrangSini_JobPosting.php [L, NC] с сообщением об ошибке 404 не найден. Пожалуйста посоветуй.
  • 1
    Вы уверены, что (1) example.com/my/OrangSini_JobPosting.php существует? и (2) нет другого RewriteRule, изменяющего его до или после этого правила.
Показать ещё 2 комментария
0

Этот код можно использовать в /my/.htaccess:

DirectoryIndex index.php
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /my/

RewriteCond %{THE_REQUEST} /Post\.php [NC]
RewriteRule ^ job/kuantan [R=302,L,NE]

RewriteRule ^job/kuantan/?$ Post.php [L,NC]

Строка запроса автоматически переносится, поэтому нет необходимости фиксировать ее в правиле.

  • 0
    Спасибо анубхава за ответ. Я следовал твоим инструкциям и пытался, но это не удалось. Вместо этого я получил «404 Not Found» -> Запрошенный URL /my/job/kuantan/Post.php не был найден на этом сервере. Пожалуйста посоветуй!
  • 0
    Кроме того, мне не нужно "([0-9] +)" И "Post.php? Id = $ 1" на RewriteRule, который вы дали? Пожалуйста посоветуй!
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню