Переписать URL-адрес php mvc и .htaccess

Я новый программист, в настоящее время изучаю php mvc. Я создаю систему framework/mvc с нуля... Теперь у меня проблема с .htaccess.

    example.com = localhost // unable to post question for localhost link

Мой URL-адрес приложения выглядит так...

        http://example.com/mvc/index.php?go=test //test is a controller's name

С помощью .htaccess я очистил URL-адрес на ....

        http://example.com/mvc/test

If a controller does not exists it shows an error view, which contains some error message.

        http://example.com/mvc/doesnotexists
But if I put "/" (forward slash) in the url...
        http://example.com/mvc/test/
it shows the error but does not load any css or js file.

I have also included controllers method in url...

        http://example.com/mvc/test/viewresult
If no matched method found in that controller show error message, it shows but same problem...no css nor js.

I have fully loaded css and js if I go through full url

        http://example.com/mvc/index.php?go=doesnotexists/
and so on

Я пробовал несколько правил .htaccess, но не смог заставить их работать. Пожалуйста, помогите и заранее спасибо.. Мой текущий код .htaccess...

<IfModule mod_rewrite.c>

    # Turn on
    RewriteEngine On

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-l

    #RewriteCond %{REQUEST_URI} !^/assets/
    #RewriteCond $1 !^(favicon\.ico|favicon\.png|media|robots\.txt|crossdomain\.xml|.*\.css|.*\js)

    RewriteRule ^(.+)$ index.php?go=$1 [QSA,L]

   # Generic 404 for anyplace on the site
   # ...

</IfModule>

php url-routing apache .htaccess
person Shakil    schedule 16.08.2012    source источник
comment
Это не проблема перезаписи URL-адресов, хотя вы можете решить эту проблему с помощью более сложных правил. Вам нужно исправить ссылки на ресурсы в вашем HTML. Большинство программистов предпочитают абсолютные ссылки на сценарии и таблицы стилей, но вы также можете использовать обходной путь <base href=>, который существует именно для этой цели.   -  person mario    schedule 16.08.2012
comment
возможный дубликат отсутствует файл CSS и изображения после перезаписи URL   -  person mario    schedule 16.08.2012
comment
возможный дубликат URL переписывает неработающую ссылку на css   -  person mario    schedule 16.08.2012


Ответы (2)


arrow_upward
5
arrow_downward

Лучшее решение для css и js - использовать полный путь:

http://example.com/mvc/assets/style.css

http://cdn.example.com/style.css

и переписать

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php?go=$1

если ваш «тест» — это ваш контроллер, а «парам» — это действие «тестового» контроллера, который вы можете использовать

http://example.com/mvc/test/param

$_GET['go'] будет "test/param", вам нужно взорвать его, чтобы получить действие "param"

person Louis.CLast    schedule 16.08.2012

arrow_upward
0
arrow_downward

Убедитесь, что файлы CSS в html являются абсолютными путями /assets/mystyle.css, а не относительными assets/mystyle.css или ../assets/mystyle.css.

person Moak    schedule 16.08.2012
comment
Как насчет использования тега <base>? - person Anthony Rutledge; 18.03.2017