.htaccess красивые URL не работают

Я пытаюсь использовать красивые URL-адреса на своем сайте, и я не слишком много знаю о htaccess, но после некоторого поиска я получил следующее:

RewriteEngine On
RewriteRule ^([a-z]+)\/([0-9]+)\/?$ content.php?action=$1&id=$2 [NC]

Я пытаюсь изменить это:

mysite.com/cms/content.php?action=content&ID = 80

в:

mysite.com/cms/content/80

Но почему-то это не работает, и я получаю пустой экран и ошибку 404,

Failed to load resource: the server responded with a status of 404 (Not Found) --in-- /cms/files/plugin/tinymce/tinymce.min.js

Об ошибке 404: он должен загрузить файл .js из mystie.com/files/plugin/tinymce/tinymce.min.js — не — mystie.com/cms/files/plugin/tinymce/tinymce.min.js

Мой файл htaccess находится в корневой папке. Я делаю что-то неправильно?

Я думаю, что сервер не прочитал мой файл .htaccess. Как мне выяснить проблему?

1

Решение

Вы должны поместить это правило в /cms/.htaccess:

RewriteEngine On
RewriteBase /cms/

RewriteRule ^([a-z]+)/([0-9]+)/?$ content.php?action=$1&id=$2 [NC,L,QSA]

Затем вам нужно добавить это в <head> раздел HTML вашей страницы: <base href="/" /> так что каждый относительный URL разрешается из этого URL, а не относительного URL текущей страницы.

0

Другие решения

RewriteEngine On
RewriteRule ^/cms/([a-z]+)/([0-9]+)$ content.php?action=$1&id=$2 [NC]

Удалить побеги \

0

Вы должны обязательно включить подпапку, если ваш htaccess находится в корне.
Попробуйте это правило.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^cms/([a-z]+)/([0-9]+)/?$ /cms/content.php?action=$1&id=$2 [NC,L]

Также пустой экран обычно означает ошибку PHP.

0

У тебя есть /cms/ в вашем URL до остального, поэтому вам нужно изменить RewriteRule что-то вроде этого:

RewriteRule ^cms/([a-z]+)\/([0-9]+)\/?$ content.php?action=$1&id=$2 [NC]

Кроме того, я надеюсь, что вы знаете, что .htaccess не может работать на некоторых серверах (например, Nginx или несколько пользовательских), и даже на апаш серверы могут быть mod_rewrite отключен.

0

Я предполагаю, что ваши скрипты и стили связаны с помощью относительных URL. Потому что старый URL /cms/content.php база URI /cms/ и все ваши относительные ссылки разрешены /cms/Я полагаю, что вы хотите.

Однако, когда вы меняете свои ссылки на /cms/content/1234база URI становится /cms/content/ и все относительные ссылки будут использовать это в качестве своей базы, и, поскольку «контент» даже не является реальной папкой, все эти ссылки будут 404, и вы не будете загружать ни один из ваших CSS-контента или скриптов.

Измените ссылки на абсолютные URL-адреса или укажите базу URI в заголовке ваших страниц (внутри <head> </head> теги):

<base href="/cms/" />
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector