2015-03-09 1 views
1

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

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

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

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. Как узнать эту проблему?

+0

@anubhava это в корне. имеют ошибку 404, не удалось загрузить ресурс: сервер ответил статусом 404 (не найдено) --in-- /cms/files/plugin/tinymce/tinymce.min.js – Pedram

+0

Является '/ cms /' a установка wordpress? В папке '/ cms /' также есть .htaccess? – anubhava

+0

@anubhava no in cms - это мои собственные cms. в/cms нет никакого htaccess. в предыдущем ответе, около 404 ошибок. он должен загрузить файл .js из mystie.com/files/plugin/tinymce/tinymce.min.js - not - mystie.com/cms/files/plugin/tinymce/tinymce.min.js - в чем проблема? – Pedram

ответ

0

Вы должны поместить это правило в /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

этот код тоже не работает. Я думаю, проблема в другом. – Pedram

+0

Да. но не работает. Я думаю, что .htaccess не читается вообще. – Pedram

+0

спасибо, теперь я знаю, что htaccess работает нормально. также ваш ответ работает отлично, но css или не загружен, я работаю над этим, я думаю, нужно изменить базу или src .. спасибо за вашу большую помощь. – Pedram

0

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

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

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

+0

все еще не работает .. да вы правы, но я проверил на другом сайте на этом сервере. тестирование на wordpress и другие cms с плагином довольно URL. – Pedram

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

Remove побег слэши \

+0

еще не работает. еще пустой экран. в чем проблема? – Pedram

+0

Если ваш htaccess находится внутри папки cms remove/cms из правила перезаписи. – Wr1t3r

+0

не его нет. его в корне @ Wr1t3r – Pedram

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

это тоже не работает. в любом случае спасибо за ваш ответ. – Pedram

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.