.htaccess / mod_rewrite - PullRequest
       14

.htaccess / mod_rewrite

0 голосов
/ 23 мая 2009

На самом деле я хочу запустить ~name/how вместо ~name/how.php.

Я внес следующие изменения в .htaccess:

# If the requested URI does not contain a period in the final path-part
RewriteCond %{REQUEST_URI} !(.[^./]+)$
# and if it does not exist as a directory
RewriteCond %{REQUEST_fileNAME} !-d
# and if it does not exist as a file
RewriteCond %{REQUEST_fileNAME} !-f
# then add .html to get the actual filename
RewriteRule (.*) $1.php [L]

Но он будет работать как:

~name/~name/how

И при каждом щелчке ссылки будет добавлено ~name в URL ex. http://ip/~name/~name/~name/serach.

Можете ли вы сказать мне, что не так в .htaccess?

Ответы [ 2 ]

1 голос
/ 23 мая 2009

Вы используете относительные, а не абсолютные пути. Ваши страницы теперь думают, что вы находитесь в пути ~ имя /. Вы можете установить <base href> на своих страницах.

Возможно, вы могли бы упростить это, используя 'DirectoryIndex index.php', чтобы сопоставить / что угодно с /whwhat/index.php

Это может помочь: Как использовать apache mod_rewrite rewriterule без изменения относительных путей

РЕДАКТИРОВАТЬ: Краткий ответ. Вы должны рассмотреть возможность использования абсолютных путей для ваших меню и включений php, чтобы предотвратить проблемы, когда вы начнете вкладывать глубже. Ваши относительные пути действительны только в том случае, если вы находитесь на двух уровнях (например, ~ labourfa2 / search /)

Честно говоря, ваши ссылки беспорядочные, поэтому вы запутались. Я настоятельно рекомендую создать очень простой тестовый сайт, чтобы правильно организовать пути. Используйте абсолютные и относительные пути в зависимости от ситуации. Удалите базовый раздел, так как это вас больше смущает. После запуска попробуйте переписать еще раз, помня о том, что ваши относительные пути, возможно, потребуется обновить, если глубина перезаписи изменяется при перезаписи ..

0 голосов
/ 26 августа 2009

Это проблема разрешения URL: относительные URL всегда разрешаются на базовом URL, который является URL текущего ресурса, если не указано иное. Поэтому, если вы находитесь на /~name/foo и там есть ссылка, указывающая на ~name/bar (это просто относительный путь URL!), Она будет преобразована в /~name/~name/bar. Но если вы укажете на /~name/bar, оно не будет решено, поскольку это уже абсолютный путь URL.

Таким образом, вы можете избежать этого, используя абсолютные URL-пути (начинающиеся с /) или изменив базовый URL-адрес (см. BASE HTML-элемент ). Но последнее повлияет на любую относительную ссылку на URL, а не только на те, которые начинаются с относительного пути URL.

...