Url Parametreleri Rewrite - http://myweb/dept/app Değiştir http://myweb/?dept=dept&app=app

2 Cevap php

Şu anda Ben optimize gereken bir web uygulaması var, ve yöntemler ya da başarmak için çalışıyorum şey böyle olduğunu:

http://myweb/dept/app

itibaren

http://myweb/?dept=dept&app=app

Şu anda bu onun için bir PHP kodu olarak ettik:

if(empty($_REQUEST['dept'])) {     
 $folder = "apps/"; 
} else {    
 $folder = str_replace("/", "", $_REQUEST['dept']) . "/"; }    
  if(empty($_REQUEST['n'])) {     
     include('user/home.php'); 
	 } else {     
	       $app = $_REQUEST['n'];
	      if(file_exists($folder.$app.".php")) {          
			 include($folder.$app.".php");     
			 } else  {  				 
			 include("global/error/404.php");    
			 }
		 }

Bunu nasıl yaparsınız?

Ben orada şu anda yarı değilim:

RewriteRule ^([A-Za-z]+)$ /index.php?app=$1

ama bu sadece bir kısmını yeniden yazar.

Teşekkürler

2 Cevap

Birçok çerçeveler Bunu yolu aşağıdaki kurallardan biri ile:

RewriteRule ^(.*)$ /index.php?q=$1
RewriteRule ^(.*)$ /index.php

In the 1st case you get the query string in $_GET["q"].
In the 2nd case you have to get the query string from $_REQUEST or something. (just do some var_dumps till you find what you need).
Then you explode("/") this and you're all set.

TYPO3, eZPublish, Drupal Bu nasıl bir göz.

Ayrıca sitesi (images / css / js / vb gibi) statik dosyaları açmak için izin vermek için aşağıdaki koşulları eklemek gerekir. Onlar rewrite yapmak değil apache söylesem aslında bir dosya, dizinle veya sembolik eşleşen bir konuma URL puan. (Sen RewriteRule yönergesi önce bunu yapmanız gerekir)

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

Bu çalışması gerekir:

RewriteRule ^([A-Za-z]+)/([A-Za-z]+)$ index.php?dept=$1&app=$2 [QSA]

Sen yeniden yazılamaz URL'ye eklenecek herhangi bir GET parametreleri için sırayla QSA parçası gerekir.

Bunu index.php için her şeyi yeniden yazmak daha esnek olabilir bulmak, ve sonra orada url ayrýlýyoruz kolu olabilir, örneğin

.htaccess:

#only rewrite paths that don't exist
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php/$1

PHP:

<?php
$parts = explode('/', $_SERVER['PATH_INFO']);
$dept = isset($parts[0]) ? $parts[0] : 'someDefault';
$app = isset($parts[1]) ? $parts[1] : 'anotherDefault';