PDA

View Full Version : سوال: مشکل با آدرس قسمت برچسب



ravand
دوشنبه 04 اسفند 1393, 12:35 عصر
سلام
من میخوام ادرس برچسب سایتم رو طوری بسازم که از لحاظ سئو مناسب باشه.
میخوام این ادرس رو:

http://localhost/poshe/tag.php?tag=اسکریپت&page=2
به این ادرس تبدیل کنم:

http://localhost/poshe/tag/اسکریپت/page/2
چون قسمت برچسب صفحه بندی داره و اگه مطلبی زیاد باشه میره صفحات بعد . برای همین میخوام به این شکل در بیاد.
من متاسفانه htaccess درست و حسابی بلد نیستم. برای همین اینو نوشتم که درست کار نکرد:

RewriteRule ^tag/page/(.*/)([0-9])$ tag.php?page=$1 [L,QSA]
متشکرم.

thacker
دوشنبه 04 اسفند 1393, 12:39 عصر
فکر کنم این کار کنه :

RewriteRule ^tag/(.*)/page/(.*) tag.php?tag=$1&page=$2 [NC]

MMSHFE
دوشنبه 04 اسفند 1393, 13:19 عصر
فکر نکنم کار کنه چون / خودش جزو کارکتر . محسوب میشه. باید اینطوری بنویسید:

RewriteRule ^tag/([^/]*)/page/(\d+) tag.php?tag=$1&page=$2 [NC]
البته باید یک رول جداگانه هم بعدش برای صفحاتی بنویسید که فقط tag دارن و page ندارن.

ravand
دوشنبه 04 اسفند 1393, 14:07 عصر
البته باید یک رول جداگانه هم بعدش برای صفحاتی بنویسید که فقط tag دارن و page ندارن.

متشکرم. من برای این قسمت از دستور زیر استفاده کردم و این مشکلی نداره:

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


الان این دستور کار نمیکنه:

RewriteRule ^tag/([^/]*)/page/(\d+) tag.php?tag=$1&page=$2 [NC]
من در قسمت php اینطوری ادرس دهی کردم:

echo "<a href='/poshe/tag/$tag/page/$i'>$i</a>";
اگه من معنی این دستوراتی که نوشتید رو می فهمیدم خیلی بهتر بود. می فهمیدم مثلا \d+ یا کاراکتر های دیگه چوری کار میکنند؟
ممنونم

bagherok
دوشنبه 04 اسفند 1393, 19:19 عصر
اگه من معنی این دستوراتی که نوشتید رو می فهمیدم خیلی بهتر بود. می فهمیدم مثلا \d+ یا کاراکتر های دیگه چوری کار میکنند؟



RewriteRule ^tag/([^/]*)/page/(\d+) tag.php?tag=$1&page=$2 [NC]

/tag^ => شروعش با tag باشه و بعدش یه /
/(*[/^]) => بعدش هرچیزی بیاد جز / 0 یا بشتر و مقادیر درونش رو تو 1$ بریز و بعدش یه / بیاد
page/ => بعد page بیاد و بعد /
(+d\) => عدد بیاد ( 1 یا بیشتر) و و مقادیر درونش رو تو 2$ بریز

d => حرف d
d\ => یه عدد تک رقمی
+d\ => به عدد بطول 1 یا بیشتر

[] => مجموعه ای از مقادیر مجاز
[^] => برعکس حالت بالا مجموعه ای از مقادیر که مجاز نیستند
[/^]=>هرچیزی بیاد به جز / فقط یکبار
[/^]=>هرچیزی بیاد به جز / 0 یا بیشتر

ravand
دوشنبه 04 اسفند 1393, 19:32 عصر
ظاهراً درسته و خود چیزی هست که بهش نیاز دارم. ولی موندم چرا کار نمیکنه و اخطار !Bad request رو میده!به نظر شما چه عواملی باعث میشه این اتفاق بیوفده؟

bagherok
دوشنبه 04 اسفند 1393, 19:43 عصر
خب چیزی که خودتون نوشتید یه /. قبلش داره
اینو هم تست کردید


RewriteRule ^tag/([^/]*)/page/(\d+) ./tag.php?tag=$1&page=$2 [NC]

ravand
دوشنبه 04 اسفند 1393, 19:59 عصر
خب چیزی که خودتون نوشتید یه /. قبلش داره
اینو هم تست کردید


RewriteRule ^tag/([^/]*)/page/(\d+) ./tag.php?tag=$1&page=$2 [NC]
یک دنیا ممنونم این چیزی که شما نوشتید صحیح تره. من اینو که شما نوشتید رو قبلاً تست کرده بودم. ولی کار نمیکرد. علتش هم مشکلی بود که برنامه ی xampp داشت. من قبلاً هم این مشکل رو در xampp داشتم. فراموش کرده بودم. حالا یادم امد و روی سایتم امتحان کردم جواب داد. نمیدونم چرا این اتفاق می افته شاید کش میکنه.
بازم ممنونم.

bagherok
دوشنبه 04 اسفند 1393, 20:03 عصر
خواهش میکنم
این cheat-sheets ها هم میتونه خیلی راه گشای خوبی باشه


http://www.cheatography.com/davechild/cheat-sheets/regular-expressions/


http://www.rexegg.com/regex-quickstart.html