Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: htaccess
Форумы портала PHP.SU » » Вопросы новичков » htaccess

Страниц (1): [1]
 

1. condpattern - 14 Июля, 2013 - 19:54:27 - перейти к сообщению
Привет.
Делаю сайт на локальном сервере/ denwer.
Меняю адрес sitename.com/name.php?id=xxx на sitename.com/name/xxx
PHP:
скопировать код в буфер обмена
  1. RewriteRule ^name/([^/]*)$ /name.php?name=$1 [L]

Пользуюсь генератором generateit[dot]net/mod-rewrite/
Происходит нечто странное:
Он находит файл name.php, даже передает верно переменную, но при этом сервер думает, что я не в корневой папке, а в папке name и поэтому все ссылки, аля
js/jquery.js
css/style.css
он увы не находит и открывается нечто: наполовину страница, наполовину нет.
Я так понимаю это связано с настройками php сервера? Как это поправить?
Спасибо.
2. DeepVarvar - 14 Июля, 2013 - 20:34:33 - перейти к сообщению
Причем тут пхп?
Это браузер.
Пиши в шаблонах полные пути от корня:

/js/jquery.js
/css/style.css

и будет тебе счастье.
3. condpattern - 14 Июля, 2013 - 20:39:05 - перейти к сообщению
[quote=DeepVarvar][/quote]
Благодарю!
(Добавление)
DeepVarvar пишет:
Причем тут пхп?
Это браузер.
Пиши в шаблонах полные пути от корня:

/js/jquery.js
/css/style.css

и будет тебе счастье.


А не подскажете, как сделать параллельную работу 2 правил:
PHP:
скопировать код в буфер обмена
  1. # Удаляем расширения файлов из URL
  2. # Заменить html вашими собственными расширениями. К примеру: php, htm, asp
  3. RewriteEngine on
  4. RewriteCond %{REQUEST_FILENAME} !-d
  5. RewriteCond %{REQUEST_FILENAME}\.php -f
  6. RewriteRule ^(.*)$ $1.php


PHP:
скопировать код в буфер обмена
  1. # mod_rewrite
  2. RewriteRule ^name/([^/]*)$ /name.php?id=$1 [L]


1. В первом случае меняю вместо:
name.com/page.php
ставлю
name.com/page
2. Во втором вместо:
name.com/name.php?id=xxx
ставлю
name.com/name/xxx

Однако при включенном первом, второе не работает.
По видимому, он заменяет
name.com/name/xxx
на
name.com/name/xxx.php
вместо
name.com/name.php?id=xxx
Спасибо.
4. DeepVarvar - 14 Июля, 2013 - 22:28:53 - перейти к сообщению
http://forum.php.su/topic.php?fo...33&topic=736
5. condpattern - 14 Июля, 2013 - 23:02:29 - перейти к сообщению
[quote=DeepVarvar][/quote]
Мерси.
6. soleg - 15 Июля, 2013 - 02:27:59 - перейти к сообщению
CODE (htmlphp):
скопировать код в буфер обмена
  1. RewriteEngine On
  2.  
  3. #указываем директории которые будут игнорироваться реврайтом.
  4. RewriteCond %{REQUEST_URI} !^(/images/|/css/|/javascript/)$
  5.  
  6. #Обрабатываем ссылки вида sitename.com/ScriptName/IdValue/
  7. # При запросе sitename.com/name/666 получается запрос sitename.com/name.php?id=666
  8. RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$  /$1.php?id=$2 [QSA,L]
  9. RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$  /$1.php?id=$2 [QSA,L]
  10.  
  11. #Обрабатываем ссылки вида sitename.com/ScriptName/
  12. # При запросе sitename.com/name/ получается запрос sitename.com/name.php
  13. RewriteRule ^([a-zA-Z0-9_-]+)/$  /$1.php [QSA,L]
  14. RewriteRule ^([a-zA-Z0-9_-]+)$  /$1.php [QSA,L]
  15.  
  16.  
  17.  


[QSA,L] - позволяет данному условию принимать GET параметры. Т.е. можно использовать такого вида линки

CODE (html):
скопировать код в буфер обмена
  1. sitename.com/ScriptName/IdValue/?param1=value

 

Powered by ExBB FM 1.0 RC1