2010-12-10 2 views
0

c'est l'URL de mon application utilisecomment puis-je faire mon URL de l'application Pretty (SEF) avec htaccess

http://mydomain.com/index.php 
http://mydomain.com/video.php?id=29 
http://mydomain.com/news.php?id=33 
http://mydomain.com/photos.php?albumid=10 
http://mydomain.com/archive.php 
http://mydomain.com/album.php 
http://mydomain.com/contact.php 

je veux faire m url air propre avec htaccess comme

http://mydomain.com/video/id/29 
http://mydomain.com/news/id/33 
http://mydomain.com/photos/albumid/10 
http://mydomain.com/archive 
http://mydomain.com/album 
http://mydomain.com/contact 

le problème Cette application utilise déjà beaucoup de codes htaccess dans le répertoire racine. Voici le code qui existe déjà dans htaccess.

php_value post_max_size 100M 
php_value upload_max_filesize 100M 
php_value memory_limit 100M 

# 
# Apache/PHP/osTube settings: 
# 

# Don't show directory listings for URLs which map to a directory. 
#Options -Indexes 

# Follow symbolic links in this directory. 
#Options +FollowSymLinks 

# Set the default handler. 
#DirectoryIndex index.php 

# Override some PHP settings. 

# PHP 4, Apache 1. 
<IfModule mod_php4.c> 
    php_value error_reporting 6135 
</IfModule> 

# PHP 4, Apache 2. 
<IfModule sapi_apache2.c> 
    php_value error_reporting 6135 
</IfModule> 

# PHP 5, Apache 1 and 2. 
<IfModule mod_php5.c> 
    php_value error_reporting 6135 
</IfModule> 

# Deny access to certain files 
<Files "convert.php"> 
Order Deny,Allow 
Deny from All 
</Files> 

# Various rewrite rules. 
<IfModule mod_rewrite.c> 
    RewriteEngine on 

    # If your site can be accessed both with and without the prefix www. you 
    # can use one of the following settings to force user to use only one option: 
    # 
    # If you want the site to be accessed WITH the www. only, adapt and 
    # uncomment the following: 
    # RewriteCond %{HTTP_HOST} ^example\.com$ [NC] 
    # RewriteRule .* http://www.example.com/ [L,R=301] 
    # 
    # If you want the site to be accessed only WITHOUT the www. prefix, adapt 
    # and uncomment the following: 
    # RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC] 
    # RewriteRule .* http://example.com/ [L,R=301] 

    # Modify the RewriteBase if you are using osTube in a subdirectory and 
    # the rewrite rules are not working properly. 
    # RewriteBase /ostube 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^Home(.*)$ index.php$1 [L,QSA,NC] 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(video|audio|document|photo)/([0-9]+)(/[^/]+)?/?(.*)$ mediadetails.php?mid=$2&$4 [L,QSA,NC] 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^Video(.*)$ media.php?type=video$1 [L,QSA,NC] 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^Audio(.*)$ media.php?type=audio$1 [L,QSA,NC] 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^Document(.*)$ media.php?type=document$1 [L,QSA,NC] 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^Photo(.*)$ media.php?type=photo$1 [L,QSA,NC] 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^Tags(.*)$ tags.php$1 [L,QSA,NC] 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^Community(.*)$ community.php$1 [L,QSA,NC] 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^weblog/([0-9]+)(/[^/]+)?/?(.*)$ blog.php?action=post&pid=$1&$3 [L,QSA,NC] 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^Weblog(.*)$ blog.php$1 [L,QSA,NC] 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^Channel/(video|audio|document|photo)/([0-9]+)(/[^/]+)?/?(.*)$ media.php?type=$1&chid=$2$4 [L,QSA,NC] 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^Tag/([0-9]+)/?(.*)$ search_result.php?tid=$1&$2 [L,QSA,NC] 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^User/([^/]+)/?(.*)$ userprofile.php?uname=$1$2 [L,QSA,NC] 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^WebTV/([^/]+)/([0-9]+)(.*)$ webtv.php?mode=$1&id=$2$3 [L,QSA,NC] 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^WebTV(.*)$ webtv.php$1 [L,QSA,NC] 

    RewriteRule ^flvplayer.swf vimp.swf [L,QSA,NC] 
    RewriteCond %{QUERY_STRING} ^mediaid=(\d+)&action=getmediainfo$ 
    RewriteRule ^$ flashcomm.php?mediaid=%1&action=getmediainfo [L,NC] 
    RewriteCond %{QUERY_STRING} ^action=getmediainfo&mediaid=(\d+)$ 
    RewriteRule ^$ flashcomm.php?mediaid=%1&action=getmediainfo [L,NC] 

    #RewriteCond %{REQUEST_FILENAME} !-f 
    #RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^sitemap.xml$ sitemap.php [L,QSA,NC] 
</IfModule> 

quel code je devrais utiliser pour Rewrite_rule et aussi je vous serais reconnaissant si quelqu'un pouvait me guider vers le tutoriel où je serais en mesure de comprendre htaccess et aussi les expressions régulières.

En outre, je voudrais désactiver le fichier d'affichage des index d'options ou quelque chose dont je ne me souviens pas exactement.

merci ..

Répondre

0

Effectuez les opérations suivantes

#Turn off option indexes 
Options -Indexes 

RewriteCond %{REQUEST_URI} "/js/" [OR] 
RewriteCond %{REQUEST_URI} "/images/" [OR] 
RewriteCond %{REQUEST_URI} "/css/" 
RewriteRule (.*) $1 [L] 

#Rewrite Rules 
RewriteRule ^video/(.*) /video.php?id=$1 [L] //This gives you domain.com/video/33 
RewriteRule ^video/id/(.*) /video.php?id=$1 [L] //This gives you domain.com/video/id/33 

La première section: ^video/(.*) est ce que vous voulez que votre URL pour ressembler. Le (.*) est un espace réservé pour une variable. La deuxième section /video.php?id=$1 est l'URL réelle à réécrire. La $1 est la variable qui sera remplacée dans la première section.

Les règles RewriteCond nous disent d'ignorer ces dossiers et de ne pas les réécrire.

Espérons que cela aide. Sitepoint a un bon article pour débutants sur l'utilisation de mod_rewrite - http://articles.sitepoint.com/article/guide-url-rewriting

+0

Je ne comprends pas comment cela fonctionne réellement. J'ai essayé d'utiliser le code suivant dans htaccess Règles #Rewrite RewriteRule^nouvelles/id /(.*) /news.php?id=$1 [L] et quand j'ai essayé de l'ouvrir avec l'URL http://mydomain.com/news/id/33 il ne charge aucune des images ou des fichiers js ou css, et ajoute ce code à tous mes fichiers js et css. qu'est-ce qui ne va pas? –

+0

Avoir édité le message principal –

+0

merci matt. –