2011-12-26 2 views
0
RewriteRule ^(.*)/?$ ./view.php?id=$1 

Это работает, если скажем идентификатор = "abc123", я могу получить доступ www.site.com/abc123 прекрасно..htaccess RewriteRule каталог

Но я хочу, чтобы иметь возможность доступа с www.site.com/view/abc123

Так что я пробовал:

RewriteRule ^view/(.*)/?$ ./view.php?id=$1 

Но безрезультатно. Когда я пытаюсь получить доступ к www.site.com/view/abc123, кажется, что он даже не захватил запрос $_GET, чтобы получить идентификатор. Что случилось?

Вся моя .htaccess:

RewriteEngine On 
RewriteBase /~user/sitetest/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^view/(.+?)/?$ view.php?id=$1 

Edit:

Используя выше .htaccess, когда доступ: http://localhost/~user/sitetest/view/abc123

Он не загружает $ _GET [] с точки зрения .php. Я даже пытался повторить $ _GET [], но он отображается как пустой.

Если я отредактировал его RewriteRule ^(.+?)/?$ view.php?id=$1 И доступ http://localhost/~user/sitetest/abc123 он отлично работает.

Если я отредактировал его RewriteRule ^view-(.+?)/?$ view.php?id=$1 И доступ http://localhost/~user/sitetest/view-abc123 он отлично работает.

Это как-то связано с косой чертой ???

+0

проверить мой комментарий на моем посту, не может изменить его еще уведомить вас –

ответ

1

Попробуйте что-то вроде этого:

# this next line is really important 
RewriteBase/

RewriteRule ^view/(.+?)/?$ view.php?id=$1 

Используя RewriteBase, вы определенно говорит серверу использовать вид. php в корне сервера. Если вы не укажете RewriteBase, сервер будет использовать view.php в запрошенном каталоге (быть/view /).

Надеется, что это помогает :)

+0

Это тоже не сработало :(Я делаю это на локальном хосте, если это имеет значение? – Aaron

+0

@ Аарон вы можете опубликовать остальную часть вашего файла .htaccess? Может быть, есть что-то еще, закручивающее вещи :) –

+0

Отредактировано мое главное после. Надеюсь, это легко исправить! – Aaron

0

Я думаю, что вам не хватает / в начале регулярного выражения:

RewriteRule ^/view/(.*)$ /view.php?id=$1 
+0

я попробовал, что она не работает, к сожалению. – Aaron

+0

попробуйте изменить – RageZ

+0

Все еще не работает. Я имел /? там, чтобы он идеально работал с URL-адресами, имевшими завершающую косую черту. – Aaron

0

Fixed, установив RewriteBase в/и используя/~ пользователя/... в моей RewriteRule (кредитки Того KNAPEN, размещая здесь из кодового примера).

Итак, .htaccess OP был бы стать:

<IfModule rewrite_module> 
    RewriteEngine On 
    RewriteBase/
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^view/(.+?)/?$ /~user/sitetest/view.php?id=$1 
</IfModule> 
<IfModule !rewrite_module> 
    ErrorDocument 404 /home/user/public_html/sitetest/view.php 
    #OR perhaps: 
    #ErrorDocument 404 /home/user/httpdocs/sitetest/view.php 
</IfModule>