PDA

View Full Version : سوال: متن بی اهمیت در url rewrite



komeil64
دوشنبه 30 خرداد 1390, 14:16 عصر
سلام
اگر به آدرس بعضی از قسمت های همین سایت برنامه نویس نگاه کنید مثلا آدرس زیر

http://barnamenevis.org/forumdisplay.php?81-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D9%85%D8%A8%D8%AA%D9%86%DB%8C-%D8%A8%D8%B1-Microsoft-.Net-Frameworkاگر متن فارسی و تایتل صفحه که به آدرس اضافه شده رو هم تا 81 پاک کنیم باز هم همون صفحه لود میشه
می خواستم ببینم توی web.config چه تنظیمی رو اعمال کنم که متن فارسی بعد از خط فاصله بی اهمیت باشه برای کوئری استرینگ
وب کانفیگ من الان به صورت زیره:
<rewrite url="~/(.+)-(.+).htm" to="~/ViewContent.aspx?fa-id=$1"/>

اما اگر متن بعد از - رو بردارم صفحه رو پیدا نمی کنه
ممنون میشم راهنمایی کنید بجای -(.+) چی بزارم؟

clover
سه شنبه 31 خرداد 1390, 10:30 صبح
سلام
به این شکل می تونید بنویسید:

~/([1234567890]+)-.*

اما این زیاد جالب نیست چون مسئله Duplicate Title پیش میاد.

komeil64
پنج شنبه 02 تیر 1390, 13:17 عصر
ممنون از راهنماییتون
اگر به سایت پارسی بلاگ نگاه کنید آدرس وبلاگ هاش به این صورته
myblog.parsiblog.com/165/title content
title content تیتر مطلب شماره 165 هستش
یه کار جالبی که اونجا انجام شده اینه که اگر title content برداشته هم بشه بازم مطلب میاد
می خواستم ببینم با Url rewriting چطور این کار شدنیه؟
ممنون

clover
پنج شنبه 02 تیر 1390, 16:25 عصر
اگر به سایت پارسی بلاگ نگاه کنید آدرس وبلاگ هاش به این صورته
myblog.parsiblog.com/165/title content
title content تیتر مطلب شماره 165 هستش
یه کار جالبی که اونجا انجام شده اینه که اگر title content برداشته هم بشه بازم مطلب میاد
می خواستم ببینم با Url rewriting چطور این کار شدنیه؟

بله، به شکل زیر Rewrite کنید:

<rewrite url="~/([1234567890]+)(/.*)?" to="~/ViewContent.aspx?fa-id=$1"/>

komeil64
پنج شنبه 02 تیر 1390, 18:00 عصر
ممنون مشکلم حل شد
فقط یه سوال اینکه چطور فاصله ها رو توی آدرس بار که با %20 میزنه به - تبدیل کنم
به نظرم با Urlencode میشه ولی نتونستم تنظیم کنم
ممنون میشم راهنمایی کنین

aserfg
جمعه 03 تیر 1390, 10:00 صبح
سلام دوست عزیز برای داشتن آدرسها به صورت دلخواه دو گزینه مناسب هستند : 1- url rewrite و 2-routing اولین مورد که شما هم استفاده می کنید در زبانهای مختلف سروری مانند php , asp.net قابل پیاده سازی هستند ولی routing خاص دات نت است و دارای خاصیت سفارشی سازی و انعطاف زیاد برای بر نامه نویس . در هر صورت پیشنهاد من استفاده از دومی است . ولی در مورد سئوال :


فقط یه سوال اینکه چطور فاصله ها رو توی آدرس بار که با %20 میزنه به - تبدیل کنم

در url ها بعضی کارکترها غیر مجاز هستند که شما می تونید توضیحات تکمیلی رو در این سایت ببینید : http://www.faqs.org/rfcs/rfc2396.html

شما برای این کار باید یه تابع بنویسیم که رشته مورد نظر رو به عنوان ورودی بگیره و بعد در تابع یه آرایه از کاراکترها رو مثل :{ '#', '%', '&', '*', '{', '}', '\\', ':', '<', '>', '?', '/', ';', '@', '=', '+', '$', ',' } رو که مجاز نیستند رو به کاراکترهایی مثل (".", "-") تبدیل کنه . تابع زیر این کار رو انجام خواهد داد :

string changeurl(string url)
{
string result=null;
char[] mychar ={ '#', '%', '&', '*', '{', '}', '\\', ':', '<', '>', '?', '/', ';', '@', '=', '+', '$', ',' };
string[] res = url.Split(mychar);
foreach (var param in res)
{
result += "-"+param ;
}
return result;
}

البته فاصله جز کارکترهای غیر مجاز نیست ! ولی شما چنانچه می خواین اونا هم تبدیل بشن در لیست عناصر کارکتری آرایه mychar فاصله رو هم بزارید به این شکل ' ' دقت کنید بین کوتیشن ها یه space بزنید .
موفق باشید

komeil64
جمعه 03 تیر 1390, 14:13 عصر
سلام
ممنون از راهنماییتون
اما این تابع رو کجا بکار بگیرم چطور استفادش کنم که تو همه صفحات اعمال بشه
توی فایل global?
ممنون میشم راهنمایی کنین

komeil64
شنبه 04 تیر 1390, 11:38 صبح
سلام
جناب clover (http://barnamenevis.org/member.php?106829-clover)
از اون کدی که گفتین استفاده کردم
ولی مشکلی که پیش آورده اینه که بعضی وقتا عکسا رو لود نمی کنه
از توی پنل هاست میاد ولی از توی سایت نمیاد
آدرس عکس هم کاملا درسته ولی نمیاره!
اما حالت اول برمی گردونم مشکلی نیست
!!!!

clover
شنبه 04 تیر 1390, 12:56 عصر
آدرس عکس هم کاملا درسته ولی نمیاره!
دوست من، موقع رونویسی دامنه ها باید دقت کنید که همه ی دامنه هایی که با الگوی مورد نظر همخوانی داشته باشند رونویسی میشن. آدرس عکس رو مستقیما در آدرس بار وارد کنید و از دکمه ی رفرش استفاده کنید و ببینید چه اتفاقی میفته. می تونید دیباگ کنید و در رویداد Application_BeginRequest با بررسی Request.Path ببینید درخواست واقعی به کجا هست.

komeil64
شنبه 04 تیر 1390, 13:29 عصر
سلام ممنون از راهنماییتون
آدرس عکس کاملا درسته
ولی وقتی آدرس عکس که یه همچین چیزیه mysite.com/files/aks.jpg می زنم صفحه مطلبی که اون عکس مربوط به اونه رو بدون css لود می کنه!!!
جالب اینجاست از توی پنل هاست که عکس رو بزنم(plesk) میاد و مشکلی نداره!!!
urlrewrite رو به حالت اول که بر می گردونم یعنی به اینصورت mysite.com/12.htm یا اصلا غیر فعال می کنم مشکلی بوجود نمیاد!!!

aserfg
یک شنبه 05 تیر 1390, 12:27 عصر
سلام
زمانی که از url rewrite استفاده کنید آدرس فایلهای استاتیک از قبیل تصاویر ، فایلهای js ویا css احتمالا دچار مشکل می شوند برای حل باید از متد resolveurl استفاده کنید مثال :
image1.imageurl=resolveurl("~/images/image1.jpg")

komeil64
یک شنبه 05 تیر 1390, 13:21 عصر
ممنون از راهنماییتون
resolveurl رو از توی تگ html چطور باید تنظیم کرد؟
مثلا برای تگ زیر

<link rel="stylesheet" type="text/css" href="style/2.css" />

sara.karimi
سه شنبه 08 مرداد 1392, 00:29 صبح
میشه این چیزایی که گفته شد رو در قالب یه پروژه بزارید تا بقیه هم بتونن استفاده کنن؟!!!!!!!