2011-12-14 6 views
0

Мне нужно уметь размещать ссылки, которые выглядят как «mysite.com/?d=48YSWD96» & перейти к файловому пути «/d=48YSWD96.php» Итак, мне нужно «mysite.com/?d=48YSWD96», перейти на «mysite.com/d=48YSWD96». Я не могу запустить свое имя файла с помощью?? потому что он просто превратится в индексную страницу для корневой папки и проигнорирует содержимое в файле. Как мне это сделать? это мой htacces:mod-rewrite force?

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^([^/]+)/$ $1.php 
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$ 
RewriteRule (.*)$ /$1/ [R=301,L] 
RewriteBase/
+0

возможно дубликат [.htaccess мод силы дополнительных символов] (http://stackoverflow.com/questions/8461824/htaccess-mod-force-extra-characters) –

+0

, пожалуйста, сообщите нам, что именно должен вводить пользователь в своем браузере и какой должен быть окончательный, измененный URL-адрес на стороне сервера * * после ** rewriterules применяется –

ответ

1

То же самое, как в матче строки запроса от этого вопроса (который имеет тот же .htaccess): url construction htaccess

RewriteCond %{QUERY_STRING} (^|&)d=([A-Za-z0-9]+)($|&) 
RewriteRule ^$ /d=%2.php [L] 
+0

, что просто дает ошибку 404 –

+0

Эй, парень! Хороший намек на ** '(^ | &)'** ;) => 1 за это! –

+0

Я не эксперт, но похоже, что вы полностью отреагировали на «?» в cond/rule, который вы мне дали. Мне нужно иметь возможность использовать '?' для моих ссылок. 'd =' не нуждается в переписывании, я могу просто запустить имя файла с этим –