Кто добавляет косую черту в конце моего URL? - PullRequest
4 голосов
/ 09 мая 2011

Я использую mod_rewrite для перезаписи / products в / products.php .Я получил этот код в /. Htaccess

Options FollowSymLinks
RewriteEngine on

RewriteRule ^([a-zA-z]+)$ /$1.php [PT,L]

К сожалению, на моем сервере также есть папка / products / .Моя проблема в том, что когда я пытаюсь получить доступ к http://mydomain.com/products, мой запрос перенаправляется на http://mydomain.com/products/ и выдает ошибку, потому что у меня нет индекса для этого каталога.перенаправляет меня?Apache, мой UserAgent?Как предотвратить это без изменения имени папки или правила перезаписи?

Ответы [ 3 ]

5 голосов
/ 09 мая 2011

Вам необходимо найти «Директиву DirectorySlash».

Директива DirectorySlash определяет, должен ли mod_dir исправлять URL-адреса, указывающие на каталог, или нет.

http://httpd.apache.org/docs/2.2/mod/mod_dir.html

Вы также можете попробовать добавить дополнительный слеш к правилу перезаписи:

RewriteRule ^([a-zA-z]+)/?$ /$1.php [PT,L]

Проблема с косыми чертами

2 голосов
/ 09 мая 2011

Возможно, вы включили MultiViews на вашем Apache.

1 голос
/ 09 мая 2011

Каждый браузер добавляет косую черту после вашего запроса, если он не добавляет «.something», потому что он считает, что это папка. Чтобы избежать этого, ваше правило переписывания должно выглядеть так:

RewriteRule /products(.*)$ /index.php?page=products

OR

RewriteRule / products /index.php?page=products

Таким образом, каждый запрос будет перезаписываться с "/ products", с косой чертой или без нее.

Единственное, что ваша папка / products / не будет доступна по запросу http. Если вы хотите, вы должны изменить имя папки или имя страницы.

...