Bir proje için kendi sosyal medyamı oluşturmaya çalışıyorum. Kullanıcı veritabanını "id" veya özel "/my.user" url için sorgulayan bir php betiğidir. Ben o gibi olmak istiyorum url, bunu girdiğinizde : mysite.com/my.user bu kodla çalışır:SEO dostu URL'leri htaccess ile nasıl edinebilirim?
RewriteRule ^/?(.+)/?$ ./profile.php?u=$1 [QSA,L]
Ama htaccess beni koymak için izin vermez " profilin kimliği, mysite.com/20 örneğin çalışmıyor. Başka htaccess kodu denedi, ama bu yukarıdaki gibi aynı şekilde çalışır:
YaniRewriteRule ^/?([a-zA-Z0-9\-=&[email protected]\.]+)/?$ profile.php?u=$1 [QSA,L]
şeyleri temizlemek için;
- Bu çalışır: mysite.com/my.user
- Bu does not: mysite.com/20 veya mysite.com/myuser
Ben bu çalışma almak için bekliyoruz:
- mysite.com/20
- mysite.com/my.user
Ne yapmalıyım?
Tam .htaccess kodu:
AddDefaultCharset UTF-8
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
Options +FollowSymLinks
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^./profile.php
RewriteRule ^/?(.+)/?$ ./profile.php?u=$1 [QSA,L]
<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>
ne şimdi olur mysite.com/my.user (özel kullanıcı url) 'dir çalışan, ancak bir kullanıcı mysite.com gibi hiçbir nokta vardır değilse/MyUser. Sonra var olmayan myuser.php'yi almaya çalışır. Ayrıca "my.user" gibi "id" girdiğimde de: mysite.com/20 sadece "profil bulunamadı" diyor, bu yüzden orada bir şeyler oluyor.
$profile = mysqli_real_escape_string($mysqli, $_GET['u']);
if (filter_var($profile, FILTER_VALIDATE_INT) == true) {
$query = "SELECT * FROM UserProfile, Location WHERE UserProfile.id = '$profile' AND Location.id = '$profile'";
} else {
$queryurl = "SELECT id FROM UserProfile WHERE UserProfile.ProfileUrl = '$profile'";
if ($result2 = $mysqli->query($queryurl)) {
while ($row2 = $result2->fetch_assoc()) {
$userid = $row2['id'];
}
}
$query = "SELECT * FROM UserProfile, Location WHERE UserProfile.ProfileUrl = '$profile' AND Location.id = '$userid'";
$result2->free();
}
Saygılarımızla, Erik:
Bu
profile.php sorgu kodudur.
"Çalışmıyor" tanımını yapın. Ne yapar, bunun yerine ne yapmasını bekliyorsunuz? – deceze
Sanırım o, profile.php? U = 20 (burada 20 kimliktir), kendi özel URL'sini (my.user) kendi örneğinde güncellenen –
@deceze olarak kullanacağı anlamına gelir ve evet, Dennis dedi. –